DevToolPal
ID

Konverter CSV ke SQL

Ubah CSV menjadi pernyataan CREATE TABLE dan INSERT untuk MySQL, PostgreSQL, SQLite, atau SQL Server, dengan tipe kolom yang disimpulkan otomatis.

Berjalan lokal, tidak pernah diunggah

Opsi

Input

0 karakter · 0 B

Output

0 karakter · 0 B

Fungsinya

Memasukkan spreadsheet ke basis data biasanya berarti menulis definisi tabel dan daftar panjang pernyataan INSERT secara manual, sambil meng-escape setiap apostrof. Alat ini melakukannya untuk Anda: tempel CSV dan dapatkan skrip SQL yang siap dijalankan, berisi pernyataan CREATE TABLE dan pernyataan INSERT multibaris yang dikelompokkan per batch.

Alat ini mengikuti RFC 4180: menangani kolom bertanda kutip, koma dan baris baru di dalam sel, serta tanda kutip ganda. String di-escape dengan benar untuk basis data yang dipilih, termasuk garis miring terbalik di MySQL dan string Unicode N'…' di SQL Server.

Cara pakai

  1. Tempel CSV, unggah berkas .csv atau .tsv, atau klik Contoh.
  2. Isi Nama tabel. Gunakan titik untuk skema, misalnya public.orders atau dbo.orders.
  3. Pilih Dialek: MySQL / MariaDB, PostgreSQL, SQLite, atau SQL Server.
  4. Pilih Baris per INSERT, dan matikan CREATE TABLE jika tabel sudah ada.
  5. Salin SQL atau unduh sebagai berkas .sql, lalu jalankan dengan klien basis data Anda.

Pemisah dideteksi otomatis; Anda juga bisa memilih koma, titik koma, tab, atau pipa secara eksplisit. Jika baris pertama berisi data dan bukan nama kolom, matikan Baris pertama adalah header dan kolom akan diberi nama column_1, column_2, dan seterusnya.

Contoh

CSV ini:

id,name,price,in_stock
1,Ada's Tea,4.50,true
2,Coffee,,false

menjadi skrip PostgreSQL berikut:

CREATE TABLE "products" (
  "id" INTEGER,
  "name" TEXT,
  "price" NUMERIC(3, 2),
  "in_stock" BOOLEAN
);

INSERT INTO "products" ("id", "name", "price", "in_stock") VALUES
  (1, 'Ada''s Tea', 4.50, TRUE),
  (2, 'Coffee', NULL, FALSE);

Apostrof pada Ada's digandakan, harga yang kosong menjadi NULL, dan angka serta boolean ditulis tanpa tanda kutip.

Tipe dan dialek

  • MySQL / MariaDB: identifier dengan backtick, INT, DECIMAL, BOOLEAN, DATE, DATETIME, VARCHAR(255) atau TEXT; garis miring terbalik di string di-escape.
  • PostgreSQL: identifier bertanda kutip ganda, INTEGER, NUMERIC, BOOLEAN, DATE, TIMESTAMP, dan TEXT.
  • SQLite: identifier bertanda kutip ganda dan kelas penyimpanan SQLite INTEGER, REAL, dan TEXT; boolean ditulis sebagai 1 dan 0.
  • SQL Server: identifier dalam kurung siku, INT, DECIMAL, BIT, DATE, DATETIME2, dan NVARCHAR, dengan literal N'…' dan paling banyak 1000 baris per INSERT.
  • Sel kosong menjadi NULL. Matikan Sel kosong sebagai NULL untuk mempertahankan string kosong di kolom teks.
  • Periksa tipe yang disimpulkan sebelum menjalankan skrip pada data produksi: kolom yang di sampel hanya berisi angka kecil mungkin nanti memerlukan tipe yang lebih lebar.

FAQ

› Basis data apa saja yang didukung?

MySQL (dan MariaDB), PostgreSQL, SQLite, dan Microsoft SQL Server. Dialek menentukan cara mengutip nama tabel dan kolom, cara meng-escape string, tipe kolom yang dipakai, dan cara menulis nilai boolean.

› Bagaimana tipe kolom dipilih?

Setiap kolom dipindai: bilangan bulat menjadi INT atau BIGINT, desimal menjadi DECIMAL dengan presisi yang cukup, true/false menjadi BOOLEAN (BIT di SQL Server), tanggal ISO menjadi DATE atau DATETIME, dan sisanya teks. Angka dengan nol di depan, seperti kode pos, tetap teks. Matikan Deteksi tipe agar semua kolom menjadi teks.

› Mengapa SQL Server dibatasi 1000 baris per INSERT?

SQL Server menolak daftar VALUES yang lebih dari 1000 baris, jadi ukuran batch yang lebih besar dibatasi menjadi 1000 untuk dialek ini. Basis data lain menerima batch lebih besar, tetapi 100 sampai 1000 baris per pernyataan adalah keseimbangan yang baik antara kecepatan dan ukuran.

› Apakah CSV saya diunggah?

Tidak. Penguraian dan pembuatan SQL berlangsung sepenuhnya di peramban, jadi data tidak pernah meninggalkan perangkat Anda.