Zum Inhalt springen
🛠️ToolsShed

CSV zu SQL INSERT Generator

CSV-Daten in SQL INSERT-Anweisungen konvertieren. Optional CREATE TABLE DDL mit automatisch erkannten Spaltentypen generieren.

Über dieses Tool

Der CSV-zu-SQL-INSERT-Generator ist ein browserbasiertes Tool, das Tabellenkalkulationsdaten in ausführbare SQL-INSERT-Anweisungen konvertiert. Dieses Dienstprogramm ist unverzichtbar für Entwickler und Datenbankadministratoren, die Daten aus CSV-Dateien in SQL-Datenbanken migrieren, Testdatenbanken schnell füllen oder Daten in einem Format freigeben müssen, das direkt für jedes SQL-Datenbanksystem ausgeführt werden kann.

Zur Verwendung dieses Tools fügen Sie Ihre CSV-Daten ein oder laden sie hoch, und das Tool erkennt automatisch die Spaltenkopfzeilen und Datentypen. Sie können dann einfache INSERT-Anweisungen für vorhandene Tabellen generieren oder eine CREATE-TABLE-Anweisung mit abgeleiteten Spaltendefinitionen einbeziehen. Das Tool unterstützt Anpassungsoptionen wie die Angabe des Tabellennamens, die Verarbeitung von NULL-Werten und die Auswahl zwischen verschiedenen SQL-Dialekten oder Anführungszeichen-Stilen.

Dieses Tool behandelt Grenzfälle wie Felder mit Anführungszeichen mit Kommas, Zeilenumbrüche in Zellen und Sonderzeichen elegant. Es ist besonders nützlich für einmalige Datenimporte, das Befüllen von Entwicklungsdatenbanken oder die Vorbereitung von Datensätzen für Sicherungs- und Wiederherstellungsworkflows, ohne Kommandozeilen-Tools oder Datenbankx-Client-Software zu benötigen.

Häufig gestellte Fragen

Code-Implementierung

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.