Aller au contenu

Convertir Excel en SQL

Déposez votre fichier Excel 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.

Votre fichier
xlsxclientes_2024.xlsxFichier d'exemple, 7 ko
Votre base de données

4 lignes converties, 10 corrections, aucune rejetée

Afficher
Les premières lignes de clientes_2024.xlsx, avec chaque correction signalée
Ligne
500127Peña Muñoz0123403/02/2024sí1.234,50
600128José Ángel0987015/02/2024noN/A
700129Zoë Ortíz4410029/02/2024sí-12,00
800130Ñuño Castañeda0670011/03/2024no980,75
-- Written by IntoSQL for PostgreSQL.

SET client_encoding = 'UTF8';
BEGIN;

CREATE TABLE clientes_2024 (
    no_cliente text NOT NULL,
    nombre text NOT NULL,
    c_p text NOT NULL,
    alta date NOT NULL,
    activo boolean NOT NULL,
    saldo numeric(6,2)
);
COMMENT ON COLUMN clientes_2024.no_cliente IS 'Nº Cliente';
COMMENT ON COLUMN clientes_2024.c_p IS 'C.P.';

INSERT INTO clientes_2024 (no_cliente, nombre, c_p, alta, activo, saldo) VALUES
('00127', 'Peña Muñoz', '01234', '2024-02-03', TRUE, 1234.50),
('00128', 'José Ángel', '09870', '2024-02-15', FALSE, NULL),
('00129', 'Zoë Ortíz', '44100', '2024-02-29', TRUE, -12.00),
('00130', 'Ñuño Castañeda', '06700', '2024-03-11', FALSE, 980.75);

COMMIT;

Corrections

  1. L'en-tête est à la ligne 4 ; les lignes au-dessus ont été écartées.
  2. La ligne 9 ("TOTAL") est un total, elle a donc été écartée.
  3. La colonne "Nº Cliente" s'appelle désormais no_cliente pour que PostgreSQL la lise sans guillemets.
  4. La colonne "C.P." s'appelle désormais c_p pour que PostgreSQL la lise sans guillemets.
  5. Zéros initiaux conservés dans "Nº Cliente" : 00127 reste 00127, enregistré en texte.
  6. Zéros initiaux conservés dans "C.P." : 01234 reste 01234, enregistré en texte.
  7. 15/02/2024 prouve que les dates de "Alta" commencent par le jour, donc 03/02/2024 est lu comme 2024‑02‑03.
  8. "Activo" contient des mots oui et non (sí, no), enregistrés en booléen.
  9. Les nombres de "Saldo" utilisent une virgule décimale : 1.234,50 est lu comme 1234.50.
  10. N/A dans "Saldo" lus comme vides (1 sur 4 valeurs).

Votre fichier est converti sur cet ordinateur et n'est jamais envoyé.

Autres exemples :

Un fichier Excel, six bases de données

L'exemple ci-dessus, clientes_2024.xlsx, et le type que reçoit chacune de ses colonnes dans chaque base de données.

Dans le fichierPremière valeurPostgreSQLMySQLMariaDBSQLiteSQL ServerOracle
Nº Cliente00127textvarchar(8)varchar(8)TEXTnvarchar(8)VARCHAR2(8 CHAR)
NombrePeña Muñoztextvarchar(16)varchar(16)TEXTnvarchar(16)VARCHAR2(16 CHAR)
C.P.01234textvarchar(8)varchar(8)TEXTnvarchar(8)VARCHAR2(8 CHAR)
Alta03/02/2024datedatedateDATEdateDATE
Activosíbooleantinyint(1)tinyint(1)BOOLEANbitNUMBER(1)
Saldo1.234,50numeric(6,2)decimal(6,2)decimal(6,2)NUMERIC(6,2)decimal(6,2)NUMBER(6,2)

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 clientes_2024.postgresql.sql

    ON_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 < clientes_2024.mysql.sql

    Le 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 < clientes_2024.mariadb.sql

    Le 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 clientes_2024.db < clientes_2024.sqlite.sql

    Le 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 clientes_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 @clientes_2024.oracle.sql

    Le 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 Excel et chaque base de données

Ce qu'IntoSQL lit dans les fichiers Excel

  • La ligne d'en-tête est trouvée même quand des titres ou des notes se trouvent au-dessus, et une ligne de totaux à la fin est écartée.
  • Les dates stockées comme numéros de série Excel deviennent de vraies dates, dans le système de dates 1900 comme dans le 1904.
  • Les codes avec des zéros en tête, comme 00127, restent du texte. Quand un classeur a plusieurs feuilles, vous choisissez la feuille.

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

ValeurPostgreSQLMySQLMariaDBSQLiteSQL ServerOracle
Oui et nonbooleantinyint(1)tinyint(1)BOOLEANbitNUMBER(1)
Nombres entiersintegerintintINTEGERintNUMBER(10)
Grands nombres entiersbigintbigintbigintINTEGERbigintNUMBER(19)
Décimauxnumeric(p,s)decimal(p,s)doubledecimal(p,s)doubleNUMERIC(p,s)TEXTdecimal(p,s)NUMBER(p,s)
Nombres à virgule flottantedouble precisiondoubledoubleREALfloatBINARY_DOUBLE
DatesdatedatedateDATEdateDATE
Heurestimetime(6)timetime(6)timeTIMEtimeINTERVAL DAY(0) TO SECOND
Dates avec heuretimestampdatetime(6)datetimedatetime(6)datetimeDATETIMEdatetime2TIMESTAMP
Dates avec heure et décalagetimestamptzdatetime(6)datetimedatetime(6)datetimeDATETIMEdatetimeoffsetTIMESTAMP WITH TIME ZONE
Textetextvarchar(n)textmediumtextlongtextvarchar(n)textmediumtextlongtextTEXTnvarchar(n)nvarchar(max)VARCHAR2(n CHAR)CLOB

Questions sur Excel vers SQL

Pas de réponse ici ? Écrivez-nous depuis la page de contact, une personne vous répond. Page de contact

Comment convertir Excel 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.

Quelle feuille du classeur est convertie ?

La première feuille visible. Quand un classeur en a plusieurs, une option Feuille apparaît pour en choisir une autre.

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 00127 reste du texte dans chaque base de données, écrit '00127', 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 Excel ?

Dans le navigateur, le classeur est lu en entier, donc la limite est la mémoire que le navigateur accorde à cette page. L'application de bureau et la ligne de commande acceptent des classeurs de toute taille ; sur un portable Apple M4, la ligne de commande convertit un classeur de 117 Mo d'un million de lignes en environ une seconde.