🛠️ToolsShed

Generador CSV a SQL INSERT

Convierte datos CSV en sentencias SQL INSERT. Opcionalmente genera CREATE TABLE DDL con tipos de columna detectados automáticamente.

Preguntas Frecuentes

Implementación de Código

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.