เครื่องมือนี้ทำอะไร
การนำสเปรดชีตเข้าฐานข้อมูลมักต้องเขียนนิยามตารางและคำสั่ง INSERT ยาวเหยียดเอง พร้อม escape เครื่องหมาย apostrophe ทีละตัว เครื่องมือนี้ทำให้แทน เพียงวาง CSV ก็จะได้สคริปต์ SQL ที่รันได้ทันที ประกอบด้วยคำสั่ง CREATE TABLE และคำสั่ง INSERT แบบหลายแถวที่แบ่งเป็นชุด
เครื่องมือทำตาม RFC 4180 รองรับฟิลด์ในเครื่องหมายคำพูด จุลภาคและการขึ้นบรรทัดใหม่ภายในเซลล์ และเครื่องหมายคำพูดที่เขียนซ้ำ สตริงจะถูก escape อย่างถูกต้องตามฐานข้อมูลที่เลือก รวมถึงแบ็กสแลชใน MySQL และสตริง Unicode แบบ N'…' ของ SQL Server
วิธีใช้
- วาง CSV อัปโหลดไฟล์
.csvหรือ.tsvหรือกด ตัวอย่าง - กรอก ชื่อตาราง หากต้องการระบุ schema ให้คั่นด้วยจุด เช่น
public.ordersหรือdbo.orders - เลือก ฐานข้อมูล: MySQL / MariaDB, PostgreSQL, SQLite หรือ SQL Server
- เลือก จำนวนแถวต่อ INSERT และปิด CREATE TABLE หากมีตารางอยู่แล้ว
- คัดลอก SQL หรือดาวน์โหลดเป็นไฟล์
.sqlแล้วรันด้วยโปรแกรมฐานข้อมูลของคุณ
ตัวคั่นจะถูกตรวจหาอัตโนมัติ หรือจะกำหนดเป็นจุลภาค อัฒภาค แท็บ หรือไปป์เองก็ได้ หากแถวแรกเป็นข้อมูลไม่ใช่ชื่อคอลัมน์ ให้ปิด แถวแรกเป็นหัวตาราง แล้วคอลัมน์จะชื่อ column_1, column_2 ไปเรื่อย ๆ
ตัวอย่าง
CSV นี้:
id,name,price,in_stock
1,Ada's Tea,4.50,true
2,Coffee,,false
จะกลายเป็นสคริปต์ PostgreSQL ดังนี้:
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);
เครื่องหมาย apostrophe ใน Ada's ถูกเขียนซ้ำเป็นสองตัว ราคาที่ว่างกลายเป็น NULL ส่วนตัวเลขและค่าบูลีนเขียนโดยไม่มีเครื่องหมายคำพูด
ชนิดข้อมูลและภาษา SQL
- MySQL / MariaDB: ตัวระบุในเครื่องหมาย backtick ชนิด
INT,DECIMAL,BOOLEAN,DATE,DATETIME,VARCHAR(255)หรือTEXTและ escape แบ็กสแลชในสตริง - PostgreSQL: ตัวระบุในเครื่องหมายคำพูดคู่ ชนิด
INTEGER,NUMERIC,BOOLEAN,DATE,TIMESTAMPและTEXT - SQLite: ตัวระบุในเครื่องหมายคำพูดคู่ และใช้ storage class ของ SQLite คือ
INTEGER,REALและTEXTค่าบูลีนเขียนเป็น 1 และ 0 - SQL Server: ตัวระบุในวงเล็บเหลี่ยม ชนิด
INT,DECIMAL,BIT,DATE,DATETIME2และNVARCHARสตริงเขียนแบบN'…'และไม่เกิน 1000 แถวต่อ INSERT - เซลล์ว่างกลายเป็น
NULLปิด เซลล์ว่างเป็น NULL เพื่อเก็บสตริงว่างไว้ในคอลัมน์ข้อความ - ตรวจชนิดข้อมูลที่อนุมานได้ก่อนรันสคริปต์กับข้อมูลจริง คอลัมน์ที่ในตัวอย่างมีแต่ตัวเลขเล็ก ๆ อาจต้องใช้ชนิดที่กว้างขึ้นในภายหลัง
คำถามที่พบบ่อย
› รองรับฐานข้อมูลอะไรบ้าง
MySQL (และ MariaDB), PostgreSQL, SQLite และ Microsoft SQL Server ฐานข้อมูลที่เลือกจะกำหนดวิธีครอบชื่อตารางและคอลัมน์ วิธี escape สตริง ชนิดคอลัมน์ที่ใช้ และวิธีเขียนค่าบูลีน
› ชนิดคอลัมน์ถูกเลือกอย่างไร
เครื่องมือจะไล่ดูแต่ละคอลัมน์ จำนวนเต็มเป็น INT หรือ BIGINT ทศนิยมเป็น DECIMAL ที่มีความแม่นยำพอ true/false เป็น BOOLEAN (ใน SQL Server เป็น BIT) วันที่แบบ ISO เป็น DATE หรือ DATETIME ส่วนที่เหลือเป็นข้อความ ตัวเลขที่ขึ้นต้นด้วยศูนย์ เช่น รหัสไปรษณีย์ จะยังเป็นข้อความ ปิดตรวจหาชนิดข้อมูลหากต้องการให้ทุกคอลัมน์เป็นข้อความ
› ทำไม SQL Server จำกัด 1000 แถวต่อ INSERT
SQL Server ไม่รับรายการ VALUES ที่ยาวกว่า 1000 แถว ขนาดชุดที่ใหญ่กว่านั้นจึงถูกจำกัดไว้ที่ 1000 สำหรับภาษานี้ ฐานข้อมูลอื่นรับชุดที่ใหญ่กว่าได้ แต่ 100 ถึง 1000 แถวต่อคำสั่งเป็นจุดสมดุลที่ดีระหว่างความเร็วกับขนาดคำสั่ง
› CSV ของฉันถูกอัปโหลดหรือไม่
ไม่ การแยกวิเคราะห์และการสร้าง SQL ทำในเบราว์เซอร์ทั้งหมด ข้อมูลจึงไม่ออกจากอุปกรณ์ของคุณ