Lewati ke konten
🛠️ToolsShed

Generator CSV ke SQL INSERT

Konversi data CSV ke pernyataan SQL INSERT. Opsional hasilkan CREATE TABLE DDL dengan tipe kolom yang terdeteksi otomatis.

Tentang alat ini

Pembuat INSERT SQL dari CSV adalah alat berbasis browser yang mengonversi data spreadsheet menjadi pernyataan SQL INSERT yang dapat dieksekusi. Utilitas ini sangat penting bagi pengembang dan administrator basis data yang perlu memigrasikan data dari file CSV ke basis data SQL, mengisi database pengujian dengan cepat, atau berbagi data dalam format yang dapat dijalankan langsung terhadap sistem basis data SQL apa pun.

Untuk menggunakan alat ini, tempel atau unggah data CSV Anda, dan alat akan secara otomatis mendeteksi header kolom dan jenis data. Anda kemudian dapat membuat pernyataan INSERT sederhana untuk tabel yang ada atau menyertakan pernyataan CREATE TABLE dengan definisi kolom yang disimpulkan. Alat ini mendukung opsi kustomisasi seperti menentukan nama tabel, menangani nilai NULL, dan memilih antara dialek SQL atau gaya kutip yang berbeda.

Alat ini menangani kasus tepi seperti bidang yang dikutip dengan koma, jeda baris dalam sel, dan karakter khusus dengan elegan. Ini sangat berguna untuk impor data satu kali, penanaman basis data pengembangan, atau persiapan dataset untuk alur kerja pencadangan dan pemulihan tanpa memerlukan alat baris perintah atau perangkat lunak klien basis data.

Pertanyaan yang Sering Diajukan

Implementasi Kode

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.