Aller au contenu
🛠️ToolsShed

Générateur CSV vers SQL INSERT

Convertissez des données CSV en instructions SQL INSERT. Générez optionnellement le CREATE TABLE DDL avec types de colonnes détectés.

À propos de cet outil

Le Générateur d'INSERT SQL à partir de CSV est un outil basé sur le navigateur qui convertit les données de feuilles de calcul en instructions SQL INSERT exécutables. Cet utilitaire est essentiel pour les développeurs et les administrateurs de bases de données qui ont besoin de migrer les données des fichiers CSV vers les bases de données SQL, de remplir rapidement les bases de données de test ou de partager les données dans un format pouvant être exécuté directement par n'importe quel système de base de données SQL.

Pour utiliser cet outil, collez ou téléchargez vos données CSV et l'outil détecte automatiquement les en-têtes de colonnes et les types de données. Vous pouvez alors générer de simples instructions INSERT pour les tables existantes ou inclure une instruction CREATE TABLE avec des définitions de colonnes déduites. L'outil prend en charge les options de personnalisation telles que la spécification du nom de la table, la gestion des valeurs NULL et le choix entre différents dialectes SQL ou styles de guillemets.

Cet outil gère élégamment les cas limites comme les champs entre guillemets contenant des virgules, les sauts de ligne dans les cellules et les caractères spéciaux. Il est particulièrement utile pour les importations de données ponctuelles, l'amorçage des bases de données de développement ou la préparation de jeux de données pour les flux de travail de sauvegarde et de restauration sans nécessiter d'outils en ligne de commande ni de logiciel client de base de données.

Questions Fréquentes

Implémentation du Code

import csv
import io

def csv_to_sql(csv_text, table_name="my_table", include_create=True):
    reader = csv.reader(io.StringIO(csv_text.strip()))
    rows = list(reader)
    if len(rows) < 2:
        return ""

    headers = rows[0]
    data_rows = rows[1:]

    def infer_type(values):
        for v in values:
            v = v.strip()
            if v == "":
                continue
            try:
                int(v)
                return "INT"
            except ValueError:
                try:
                    float(v)
                    return "FLOAT"
                except ValueError:
                    return "VARCHAR(255)"
        return "VARCHAR(255)"

    types = [infer_type([r[i] for r in data_rows if i < len(r)])
             for i in range(len(headers))]

    sql = []
    if include_create:
        cols = ", ".join(f"{h} {t}" for h, t in zip(headers, types))
        sql.append(f"CREATE TABLE {table_name} ({cols});")

    for row in data_rows:
        values = []
        for i, val in enumerate(row):
            if types[i] == "VARCHAR(255)":
                values.append(f"'{val.replace(chr(39), chr(39)*2)}'")
            else:
                values.append(val if val.strip() else "NULL")
        cols_str = ", ".join(headers)
        vals_str = ", ".join(values)
        sql.append(f"INSERT INTO {table_name} ({cols_str}) VALUES ({vals_str});")

    return "\n".join(sql)

csv_data = """id,name,score
1,Alice,95.5
2,Bob,87"""

print(csv_to_sql(csv_data))

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.