Convertir CSV en SQL
Déposez votre fichier CSV et choisissez votre base de données pour obtenir un script SQL avec des instructions CREATE TABLE et INSERT. Chaque colonne reçoit un type, et chaque correction est listée avec sa ligne et sa colonne.
5 lignes converties, 8 corrections, aucune rejetée
| Ligne | ||||||
|---|---|---|---|---|---|---|
| 5 | 00412 | Peña Muñoz | Mérida | 15/02/2024 | 1.234,50 | sí |
| 6 | 00413 | José Ángel Ruiz | León | 03/02/2024 | 99,90 | no |
| 7 | 00414 | Zoë Ortíz | Querétaro | 29/02/2024 | N/A | sí |
| 8 | 00415 | Ñuño Castañeda | Oaxaca | 28/02/2024 | 7,25 | no |
| 9 | 00416 | Iñaki Olaizola | Mazatlán | 11/03/2024 | 980,75 | sí |
-- Written by IntoSQL for PostgreSQL.
SET client_encoding = 'UTF8';
BEGIN;
CREATE TABLE ventas_2024 (
folio text NOT NULL,
cliente text NOT NULL,
ciudad text NOT NULL,
fecha date NOT NULL,
importe numeric(6,2),
pagado boolean NOT NULL
);
INSERT INTO ventas_2024 (folio, cliente, ciudad, fecha, importe, pagado) VALUES
('00412', 'Peña Muñoz', 'Mérida', '2024-02-15', 1234.50, TRUE),
('00413', 'José Ángel Ruiz', 'León', '2024-02-03', 99.90, FALSE),
('00414', 'Zoë Ortíz', 'Querétaro', '2024-02-29', NULL, TRUE),
('00415', 'Ñuño Castañeda', 'Oaxaca', '2024-02-28', 7.25, FALSE),
('00416', 'Iñaki Olaizola', 'Mazatlán', '2024-03-11', 980.75, TRUE);
COMMIT;
Corrections
- Le fichier était encodé en windows‑1252 ; il a été converti en UTF-8.
- L'en-tête est à la ligne 4 ; les lignes au-dessus ont été écartées.
- La ligne 10 ("TOTAL") est un total, elle a donc été écartée.
- Zéros initiaux conservés dans "Folio" : 00412 reste 00412, enregistré en texte.
- 15/02/2024 prouve que les dates de "Fecha" commencent par le jour, donc 03/02/2024 est lu comme 2024‑02‑03.
- Les nombres de "Importe" utilisent une virgule décimale : 1.234,50 est lu comme 1234.50.
- N/A dans "Importe" lus comme vides (1 sur 5 valeurs).
- "Pagado" contient des mots oui et non (sí, no), enregistrés en booléen.
Votre fichier est converti sur cet ordinateur et n'est jamais envoyé.
Autres exemples :
Un fichier CSV, six bases de données
L'exemple ci-dessus, ventas_2024.csv, et le type que reçoit chacune de ses colonnes dans chaque base de données.
| Dans le fichier | Première valeur | PostgreSQL | MySQL | MariaDB | SQLite | SQL Server | Oracle |
|---|---|---|---|---|---|---|---|
| Folio | 00412 | text | varchar(8) | varchar(8) | TEXT | nvarchar(8) | VARCHAR2(8 CHAR) |
| Cliente | Peña Muñoz | text | varchar(16) | varchar(16) | TEXT | nvarchar(16) | VARCHAR2(16 CHAR) |
| Ciudad | Mérida | text | varchar(16) | varchar(16) | TEXT | nvarchar(16) | VARCHAR2(16 CHAR) |
| Fecha | 15/02/2024 | date | date | date | DATE | date | DATE |
| Importe | 1.234,50 | numeric(6,2) | decimal(6,2) | decimal(6,2) | NUMERIC(6,2) | decimal(6,2) | NUMBER(6,2) |
| Pagado | sí | boolean | tinyint(1) | tinyint(1) | BOOLEAN | bit | NUMBER(1) |
Charger le script dans votre base de données
Le téléchargement est un simple fichier .sql. Chaque base de données l'exécute avec ses propres outils.
PostgreSQL
psql -v ON_ERROR_STOP=1 -d mydb -f ventas_2024.postgresql.sqlON_ERROR_STOP arrête psql à la première erreur. Le script s'exécute dans une seule transaction, donc un chargement raté laisse la base de données intacte.
MySQL
mysql --default-character-set=utf8mb4 mydb < ventas_2024.mysql.sqlLe script définit lui-même utf8mb4 ; l'option fait envoyer le client de la même façon, donc les accents arrivent intacts.
MariaDB
mariadb --default-character-set=utf8mb4 mydb < ventas_2024.mariadb.sqlLe script définit lui-même utf8mb4 ; l'option fait envoyer le client de la même façon, donc les accents arrivent intacts.
SQLite
sqlite3 ventas_2024.db < ventas_2024.sqlite.sqlLe fichier de base de données est créé s'il n'existe pas. Le convertisseur télécharge aussi une base .sqlite prête, sans aucune commande.
SQL Server
sqlcmd -S localhost -d mydb -f 65001 -i ventas_2024.sql_server.sql-f 65001 lit le fichier en UTF-8, donc les accents et le ñ arrivent tels qu'écrits.
Oracle
sqlplus user@//localhost/mydb @ventas_2024.oracle.sqlLe script désactive les variables de substitution (SET DEFINE OFF), donc une esperluette dans vos données reste une esperluette.
La ligne de commande charge gratuitement les fichiers directement dans une base SQLite. Avec IntoSQL Pro, elle et l'application de bureau chargent aussi dans PostgreSQL, MySQL et MariaDB. Pour SQL Server et Oracle, exécutez le script.
Bon à savoir sur les fichiers CSV et chaque base de données
Ce qu'IntoSQL lit dans les fichiers CSV
- L'encodage est détecté, Windows-1252 et UTF-16 compris, donc les accents et le ñ arrivent intacts.
- Le séparateur est détecté : virgule, point-virgule, tabulation ou barre verticale. Avec un point-virgule, les virgules décimales comme 1.234,50 sont lues comme des nombres.
- Les valeurs entre guillemets peuvent contenir des séparateurs et des sauts de ligne.
Bon à savoir sur chaque base de données
- Choisissez la base de données une fois le fichier ouvert : chacune reçoit les types qu'elle prend en charge.
Comment chaque type de valeur est stocké dans chaque base de données
| Valeur | PostgreSQL | MySQL | MariaDB | SQLite | SQL Server | Oracle |
|---|---|---|---|---|---|---|
| Oui et non | boolean | tinyint(1) | tinyint(1) | BOOLEAN | bit | NUMBER(1) |
| Nombres entiers | integer | int | int | INTEGER | int | NUMBER(10) |
| Grands nombres entiers | bigint | bigint | bigint | INTEGER | bigint | NUMBER(19) |
| Décimaux | numeric(p,s) | decimal(p,s)double | decimal(p,s)double | NUMERIC(p,s)TEXT | decimal(p,s) | NUMBER(p,s) |
| Nombres à virgule flottante | double precision | double | double | REAL | float | BINARY_DOUBLE |
| Dates | date | date | date | DATE | date | DATE |
| Heures | time | time(6)time | time(6)time | TIME | time | INTERVAL DAY(0) TO SECOND |
| Dates avec heure | timestamp | datetime(6)datetime | datetime(6)datetime | DATETIME | datetime2 | TIMESTAMP |
| Dates avec heure et décalage | timestamptz | datetime(6)datetime | datetime(6)datetime | DATETIME | datetimeoffset | TIMESTAMP WITH TIME ZONE |
| Texte | text | varchar(n)textmediumtextlongtext | varchar(n)textmediumtextlongtext | TEXT | nvarchar(n)nvarchar(max) | VARCHAR2(n CHAR)CLOB |
Questions sur CSV vers SQL
Pas de réponse ici ? Écrivez-nous depuis la page de contact, une personne vous répond. Page de contact
Comment convertir CSV en SQL ?
Déposez votre fichier sur le convertisseur en haut de cette page et choisissez votre base de données : PostgreSQL, MySQL, MariaDB, SQLite, SQL Server ou Oracle. Chacune reçoit les types qu'elle prend en charge. Téléchargez le script et exécutez-le dans votre base.
Et si mon CSV utilise des points-virgules ou des tabulations ?
Le séparateur est détecté : virgule, point-virgule, tabulation ou barre verticale. Vous pouvez aussi le régler dans Plus d'options. Avec un point-virgule, les virgules décimales comme 1.234,50 sont lues comme des nombres.
Quels types utilise-t-il dans chaque base de données ?
Chaque base a les siens : les valeurs oui et non sont boolean dans PostgreSQL, tinyint(1) dans MySQL et MariaDB, bit dans SQL Server et NUMBER(1) dans Oracle. Le tableau de cette page liste chaque type de valeur.
Garde-t-il les zéros en tête ?
Oui. Un code comme 00412 reste du texte dans chaque base de données, écrit '00412', donc aucun zéro n'est perdu.
Peut-il charger les données sans script ?
Oui. La ligne de commande charge gratuitement dans SQLite, et avec IntoSQL Pro, l'application de bureau et la ligne de commande chargent dans PostgreSQL, MySQL et MariaDB. Pour SQL Server et Oracle, exécutez le script.
Quelle taille peut avoir le fichier CSV ?
Le navigateur lit le CSV au fil de l'eau, donc des fichiers de plusieurs gigaoctets fonctionnent. Sur un portable Apple M4, la ligne de commande convertit un CSV de 174 Mo d'un million de lignes en moins d'une seconde.