UTILS.
ทำงานในเบราว์เซอร์ 100%
🗄

JSON เป็น SQL CREATE TABLE

อนุมาน SQL CREATE TABLE (และ INSERT ที่เลือกได้) จากอาร์เรย์ JSON ของ object โดยเลือกชนิดคอลัมน์อัตโนมัติสำหรับ MySQL, PostgreSQL หรือ SQLite

— ผลลัพธ์จะแสดงที่นี่ —

เกี่ยวกับเครื่องมือนี้

เครื่องมือ JSON เป็น SQL CREATE TABLE อ่านอาร์เรย์ JSON ของ object (หรือ object เดี่ยว) และอนุมานนิยามตาราง SQL ที่ตรงกัน โดยเลือกชนิดของแต่ละคอลัมน์จากค่าที่มันเห็นจริง มันทำงานทั้งหมดในเบราว์เซอร์ของคุณ — JSON ถูกแยกวิเคราะห์ด้วย JSON.parse ดั้งเดิมและไม่เคยออกจากอุปกรณ์ของคุณ — คุณจึงวางไฟล์ dump ของ API หรือ export ฐานข้อมูล และสร้างโครงตารางได้ในขั้นตอนเดียว

ชนิดคอลัมน์ถูกอนุมานต่อฟิลด์ในทุกแถว: ค่าที่เป็นจำนวนเต็มทั้งหมดกลายเป็น INT (BIGINT เมื่อค่าใดเกิน 2,147,483,647), ตัวเลขที่มีทศนิยมกลายเป็น DECIMAL(p,s) ปรับขนาดตามจำนวนหลักจำนวนเต็มและเศษที่กว้างที่สุดที่คุณให้ (หรือ DOUBLE / REAL เมื่อคุณเลือกโหมด float), boolean จับคู่กับ TINYINT(1)/BOOLEAN, สตริง ISO 8601 จับคู่กับ DATETIME หรือ DATE, object และอาร์เรย์ที่ซ้อนกลายเป็น JSON/JSONB, และสตริงที่เหลือกลายเป็น VARCHAR(N) โดย N คือเลขยกกำลังสองถัดไปที่มากกว่าค่าที่ยาวที่สุด (TEXT เมื่อเกิน 255) คอลัมน์ที่เป็น null หรือขาดหายในแถวใดจะถูกปล่อยเป็น NULLABLE; มิฉะนั้นเป็น NOT NULL คอลัมน์ที่ไม่ซ้ำ ไม่เป็น null ชื่อ id หรือ uuid จะถูกเลื่อนเป็น PRIMARY KEY พร้อมเพิ่ม AUTO_INCREMENT / SERIAL / AUTOINCREMENT สำหรับคีย์ที่เป็นจำนวนเต็ม

ตัวสลับ dialect เขียนชนิดใหม่สำหรับ MySQL, PostgreSQL (SERIAL, JSONB, TIMESTAMP, DOUBLE PRECISION), หรือ SQLite (affinity INTEGER / REAL / TEXT) และใส่เครื่องหมายคำพูดกับ identifier ด้วยตัวคั่นที่ถูกต้อง (backtick สำหรับ MySQL, double quote สำหรับที่อื่น) เปิดตัวเลือก INSERT เพื่อสร้างคำสั่ง INSERT หนึ่งคำสั่งต่อหนึ่งแถวด้วย โดย string, boolean, ตัวเลข และค่า JSON ถูก escape และใส่เครื่องหมายคำพูดตาม dialect ที่เลือก

คำถามที่พบบ่อย

มันคาดหวังอินพุตอะไร?
อาร์เรย์ JSON ของ object แบบแบน เช่น แถวจาก API หรือ export หรือ object JSON เดี่ยวที่ถูกจัดการเป็นตารางแถวเดียว คีย์ทั้งหมดในทุกแถวถูกรวมกันเพื่อสร้างคอลัมน์; สมาชิกที่ไม่ใช่ object จะถูกปฏิเสธ
ชนิดคอลัมน์ถูกเลือกอย่างไร?
ต่อคอลัมน์ จากทุกค่าที่เห็น: จำนวนเต็มทั้งหมดเป็น INT/BIGINT, ทศนิยมเป็น DECIMAL(p,s) หรือ DOUBLE, boolean เป็น TINYINT(1)/BOOLEAN, ISO date-time เป็น DATETIME/DATE, object/อาร์เรย์เป็น JSON, และสตริงอื่นเป็น VARCHAR(N) (TEXT เมื่อเกิน 255 ตัวอักษร)
รองรับ SQL dialect ใดบ้าง?
MySQL, PostgreSQL และ SQLite ตัวสลับ dialect เขียนชื่อชนิดใหม่ (SERIAL, JSONB, TIMESTAMP สำหรับ Postgres; affinity INTEGER/REAL/TEXT สำหรับ SQLite) และใช้การใส่เครื่องหมายคำพูด identifier และไวยากรณ์ auto-increment ที่ถูกต้อง
primary key ถูกตัดสินอย่างไร?
หากมีคอลัมน์ชื่อ id หรือ uuid และไม่เป็น null ในทุกแถวโดยมีค่าไม่ซ้ำ มันจะถูกทำเครื่องหมาย PRIMARY KEY คีย์ที่เป็นจำนวนเต็มยังได้ AUTO_INCREMENT (MySQL), SERIAL (PostgreSQL), หรือ AUTOINCREMENT (SQLite)

เครื่องมือเพิ่มเติม