Convertisseur CSV en SQL

Obtenir des données CSV dans une base de données signifie généralement soit utiliser un outil de chargement, soit écrire des commandes COPY / LOAD DATA INFILE qui ne fonctionnent que sur des fichiers locaux. Pour de petits ensembles de données, des dizaines, des centaines, quelques milliers de lignes, des instructions INSERT simples que vous pouvez coller dans n’importe quelle console SQL sont souvent plus rapides. Cet outil prend votre CSV, prend un nom de table, et produit un INSERT par ligne avec des identifiants entre backticks et des valeurs entre guillemets simples qui sont sûres à exécuter.

Comment le SQL est assemblé

  1. 1

    Collez le CSV

    CSV standard avec une ligne d'en-tête optionnelle. Le parseur gère les cellules entre guillemets contenant des séparateurs.

  2. 2

    Définissez le nom de la table

    Les caractères non alphanumériques dans le nom de la table sont remplacés par des underscores ; revient à `my_table` si vide.

  3. 3

    Les colonnes viennent de l'en-tête

    Si le mode en-tête est activé, la ligne 1 devient la liste des colonnes. Sinon, les colonnes sont nommées `column_1`, `column_2`, etc.

  4. 4

    Un INSERT par ligne de données

    Chaque ligne devient `INSERT INTO table (cols) VALUES (...)`. Les valeurs sont entre guillemets simples et les guillemets internes sont doublés.

Dialecte, citation et quand opter pour autre chose

Le générateur cible le SQL de type MySQL avec des backticks autour des identifiants et des guillemets simples autour des valeurs. La plupart des bases de données l’accepteront avec quelques ajustements mineurs.

Aide-mémoire des dialectes

Base de données Citation des identifiants Remarques
MySQL backticks Fonctionne sans changement.
MariaDB backticks Fonctionne sans changement.
PostgreSQL guillemets doubles Remplacez ` par " avant d’exécuter.
SQLite guillemets doubles Remplacez ` par " ou supprimez la citation des identifiants.
SQL Server crochets carrés Remplacez ` par []; attention à N'...' pour Unicode.

Comment les valeurs sont échappées

Toutes les valeurs sont entre guillemets simples et tout guillemet simple intégré est doublé (O'Brien devient 'O''Brien'). C’est la méthode SQL-92 et fonctionne dans toutes les bases de données grand public. Le convertisseur ne fait pas de conversion de type, tout est émis comme une chaîne littérale, donc la conversion implicite de la base de données transformera '42' en entier lorsque la colonne est INT.

Conseils pour des importations propres

  • Créez d’abord la table. Le convertisseur émet uniquement des instructions INSERT, pas CREATE TABLE. Associez-le à un schéma que vous définissez manuellement ou générez à partir de votre ORM.
  • Divisez les gros fichiers. Collez 500-1000 lignes à la fois si votre client SQL a une limite de taille d’instruction.
  • Enveloppez dans une transaction. Pour tout ce qui dépasse quelques centaines de lignes, encadrez le collage avec BEGIN; et COMMIT; (ou START TRANSACTION; / COMMIT;). Beaucoup plus rapide que d’autocommettre chaque instruction.

Quand sauter la génération SQL

Si votre fichier contient plus de ~50 000 lignes, les chargeurs en masse natifs (COPY dans Postgres, LOAD DATA INFILE dans MySQL, bcp dans SQL Server) sont d’un ordre de grandeur plus rapides que les INSERT scriptés. Cet outil est destiné aux importations rapides, au remplissage de données de test et aux migrations ponctuelles.

Questions fréquentes

Non. Il émet uniquement des instructions INSERT. Définissez le schéma vous-même avec CREATE TABLE au préalable, ainsi, vous gardez le contrôle sur les types de colonnes, les longueurs et les contraintes plutôt que de laisser le convertisseur deviner.

Avec un changement : remplacez les guillemets d’identifiant entre backticks autour des noms de table et de colonne par des guillemets doubles. Les valeurs sont entre guillemets simples et fonctionneront sans changement sur n’importe quel dialecte SQL-92.

Les guillemets simples à l’intérieur des valeurs sont doublés (O''Brien), ce qui est l’échappement standard SQL. Les barres obliques inverses, les signes de pourcentage et les underscores passent littéralement, ils ne deviennent spéciaux que dans les motifs LIKE.

Oui, le CSV est envoyé à notre serveur pour générer le SQL. Il n’est pas stocké et n’est pas ajouté au lien de la page.

Outils similaires

Outil disponible dans d’autres langues