ไฟล์สำรองข้อมูล SQL (.sql)
ISO/IEC มาตรฐานสคริปต์ SQL เป็นไฟล์ข้อความที่มีคำสั่งฐานข้อมูล เช่น CREATE TABLE, INSERT และ SELECT ไวยากรณ์ SQL แต่ละแบบแตกต่างกัน จึงควรตรวจสอบว่าฐานข้อมูลปลายทางรองรับไวยากรณ์ของสคริปต์ก่อนเรียกใช้
แปลง SQLITE เป็น SQL
ตัวแปลงจาก SQLITE เป็น SQL ฟรีในเบราว์เซอร์ แปลงไฟล์ได้ทันทีบนอุปกรณ์ของคุณ
ตรวจสอบไฟล์และข้อมูลเมตา
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ SQL โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็นส่วนหัวระดับไบต์
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ SQL โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็น HEX (OFFSET 0):
ไม่มีลายเซ็นตายตัวการแสดงผลรูปแบบ ASCII: ไม่มีลายเซ็น ASCII ตายตัว
มาตรฐาน: ISO/IEC 9075:2023 / ANSI SQL Standard
ข้อมูลจำเพาะทางเทคนิค
| สถาปัตยกรรมคอนเทนเนอร์ | สคริปต์ข้อความ Unicode ล้วนที่มีคำสั่ง Data Definition Language (DDL) และ Data Manipulation Language (DML) |
| การบีบอัด | ข้อความล้วนแบบไม่บีบอัด (มักบีบอัดเป็น .sql.gz หรือ .sql.zst) |
| การจัดลำดับไบต์ | สตรีมข้อความ UTF-8 / Unicode |
| พื้นที่สี | ไม่เกี่ยวข้อง (สคริปต์ฐานข้อมูล) |
| ช่องสัญญาณและโครงสร้าง | คำจำกัดความสคีมาเชิงสัมพันธ์ (ตาราง, วิว, ดัชนี, คีย์นอก) และแถวคำสั่ง INSERT ข้อมูล |
| ขนาดสูงสุด | ความยาวข้อความไม่จำกัด (รองรับดัมป์ฐานข้อมูลขนาดหลายเทราไบต์) |
| ความโปร่งใส | ไม่มี |
| การสตรีมและแบบโปรเกรสซีฟ | ประมวลผลสตรีมแบบธุรกรรมทีละคำสั่ง |
ตารางเปรียบเทียบทางเทคนิค: SQL กับคู่แข่ง
| คุณลักษณะทางเทคนิค | SQL (ปัจจุบัน) | CSV | JSON | SQLITE |
|---|---|---|---|---|
| การรักษาโครงสร้างสคีมา | สคีมาสมบูรณ์ (ตาราง, ชนิดข้อมูล, คีย์นอก) | ชื่อคอลัมน์ส่วนหัวเท่านั้น | โครงสร้างเอกสารที่อธิบายตัวเองได้ | ไฟล์ฐานข้อมูลไบนารีที่สมบูรณ์ |
| โมเดลการทำงาน | สคริปต์ DDL/DML ที่ดำเนินการได้ | ข้อมูลแถวและคอลัมน์แบบพาสซีฟ | โครงสร้างต้นไม้เอกสารแบบพาสซีฟ | สืบค้น B-tree แบบไบนารีได้โดยตรง |
| การสร้างมาตรฐาน | มาตรฐาน ISO/IEC 9075 | RFC 4180 | RFC 8259 | รูปแบบไฟล์แบบเปิดของ SQLite |
| ความสัมพันธ์ของข้อมูล | ข้อจำกัดคีย์นอกเต็มรูปแบบ | ตารางแบน (ไม่มีความสัมพันธ์) | ออบเจ็กต์แม่-ลูกซ้อนกัน | ข้อจำกัดเชิงสัมพันธ์เต็มรูปแบบ |
รูปแบบความเสียหายทั่วไปและคู่มือการกู้คืน Hex
การนำเข้าฐานข้อมูลล้มเหลวพร้อมข้อความ 'ERROR: syntax error at or near...'
สาเหตุหลัก: ความไม่ตรงกันของภาษาย่อย SQL (เช่น การนำดัมพ์ MySQL ที่ใช้เครื่องหมายแบ็กทิก เข้าสู่ PostgreSQL) หรือเครื่องหมายคำพูดเดี่ยวที่ไม่ได้หลีกอักขระ (unescaped single quotes)
การกู้คืน: แปลงและทำความสะอาดไวยากรณ์ภาษาย่อยโดยใช้ File2File.app Database Transpiler
การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์
การรันสคริปต์ SQL ที่ไม่น่าเชื่อถืออาจทำให้เกิดการโจมตีแบบ SQL Injection ที่ร้ายแรง, การเขียนไฟล์ตามอำเภอใจ, หรือการยกระดับสิทธิ์ผู้ดูแลระบบ
เวกเตอร์การโจมตีที่ทราบ
- SQL Injection (SQLi) ที่ดำเนินการคำสั่งผู้ดูแลระบบโดยไม่ตั้งใจ (เช่น DROP TABLE, GRANT ALL)
- การอ่าน/เขียนไฟล์เซิร์ฟเวอร์ตามอำเภอใจผ่าน 'COPY ... FROM PROGRAM' หรือ 'LOAD DATA INFILE'
- การปฏิเสธการให้บริการผ่านนิพจน์ตารางทั่วไป (CTEs) แบบเรียกซ้ำที่ไม่มีการทำดัชนี
แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน: ห้ามรันสคริปต์ SQL ที่ไม่น่าเชื่อถือโดยตรงบนเซิร์ฟเวอร์ฐานข้อมูลโปรดักชัน ตรวจสอบและทำความสะอาดคิวรีในแซนด์บ็อกซ์แบบแยกส่วน
ประวัติความเป็นมาและเหตุการณ์สำคัญ
ข้อได้เปรียบและจุดเด่นสำคัญ
- สคริปต์ SQL กำหนดตาราง เพิ่มแถว และสอบถามฐานข้อมูลเชิงสัมพันธ์ได้ ไวยากรณ์อย่างชนิดข้อมูล คอลัมน์ identity และฟังก์ชันวันที่แตกต่างกันระหว่าง SQLite, MySQL, PostgreSQL และ SQL Server
- การรักษาความครบถ้วนของโครงสร้างเชิงสัมพันธ์: สร้างตาราง คีย์หลัก คีย์นอก ข้อจำกัด และดัชนีขึ้นใหม่ควบคู่ไปกับข้อมูล
- การดำเนินการแบบทรานแซกชัน: สามารถรันคำสั่งภายในทรานแซกชัน (BEGIN...COMMIT) เพื่อรับประกันว่าการกู้คืนฐานข้อมูลจะสำเร็จทั้งหมดหรือไม่เกิดขึ้นเลย
ข้อจำกัดทางเทคนิคและข้อควรพิจารณา
- ความเข้ากันไม่ได้ของภาษาย่อย (Dialects): ความแตกต่างเล็กน้อยของไวยากรณ์ (เช่น AUTO_INCREMENT กับ SERIAL กับ AUTOINCREMENT) ต้องมีการแปลงระหว่างเอ็นจิ้นฐานข้อมูล
- คำสั่ง SQL INSERT แบบข้อความธรรมดาใช้พื้นที่มากกว่าการจัดเก็บฐานข้อมูลแบบไบนารีอย่างมาก
- เวลาในการนำเข้าข้อมูลช้าบนการดัมพ์ฐานข้อมูลขนาดใหญ่หลายกิกะไบต์ หากไม่มีการปิดใช้งานการสร้างดัชนีใหม่
เกร็ดความรู้ทางเทคนิคที่น่าสนใจ
- เดิมที SQL มีชื่อว่า 'SEQUEL' (Structured English Query Language) แต่ถูกย่อเหลือ SQL เนื่องจากข้อพิพาทด้านเครื่องหมายการค้ากับบริษัทอากาศยาน Hawker Siddeley
- มาตรฐาน ISO อย่างเป็นทางการออกเสียงเป็นตัวอักษรแต่ละตัวว่า 'S-Q-L' แต่นักพัฒนาหลายล้านคนออกเสียงในชีวิตประจำวันว่า 'sequel'
- SQLite ซึ่งทำงานบนไวยากรณ์ SQL คาดว่าถูกติดตั้งอยู่บนอุปกรณ์มากกว่า 1 ล้านล้านเครื่องทั่วโลก
คำถามทางเทคนิคที่พบบ่อย
ไฟล์ .sql คืออะไร
ไฟล์ .sql คือสคริปต์ข้อความธรรมดา (plaintext) ที่ประกอบด้วยคำสั่ง SQL สำหรับสร้างตาราง กำหนดความสัมพันธ์ และแทรกแถวข้อมูลลงในฐานข้อมูลเชิงสัมพันธ์
ฉันสามารถแปลงไฟล์ดัมพ์ SQL เป็น CSV หรือ JSON ได้หรือไม่
ได้ File2File.app สามารถแยกวิเคราะห์ไฟล์ดัมพ์ฐานข้อมูล .sql และส่งออกตารางไปยังสเปรดชีต CSV หรือเอกสาร JSON ที่มีโครงสร้างได้โดยตรง
เหตุใดไฟล์ .sql ของ MySQL จึงใช้งานใน PostgreSQL ไม่ได้
ระบบฐานข้อมูลแต่ละชนิดใช้ไวยากรณ์เฉพาะของตนเองต่างกัน (เช่น ชนิดข้อมูลและวิธี escape เครื่องหมายคำพูด) คุณต้องแปลงไวยากรณ์เฉพาะของแต่ละไดอะเล็กต์เมื่อต้องย้ายข้อมูลระหว่างเอนจินฐานข้อมูล
คู่การแปลงไฟล์ SQL ที่เกี่ยวข้อง
การแปลงไฟล์ฐานข้อมูล SQLite เป็นสคริปต์ SQL จะเปลี่ยนฐานข้อมูลไบนารีให้เป็นชุดคำสั่งข้อความที่อ่านได้ เพื่อให้ย้ายฐานข้อมูลและนำเข้าข้อมูลไปยังเซิร์ฟเวอร์ได้ง่ายขึ้น
การแปลงไฟล์ดัมพ์ SQL แบบข้อความเป็นไฟล์ส่งออกข้อมูล JSON จะเปลี่ยนตารางฐานข้อมูลเชิงสัมพันธ์ที่มีโครงสร้างตายตัวให้เป็นออบเจ็กต์ซ้อนกันที่ยืดหยุ่น สำหรับเว็บแอปสมัยใหม่
แปลงสคริปต์สำรองข้อมูลฐานข้อมูลเชิงสัมพันธ์ให้เป็นสเปรดชีตแบบตารางแบน เพื่อการวิเคราะห์ข้อมูลและสร้างรายงานที่ง่ายดาย
แปลงไฟล์สำรอง .bak ของ SQL Server ที่รองรับเป็นสคริปต์ SQL แบบข้อความ เพื่อใช้ตรวจสอบหรือย้ายข้อมูล
การแปลงสคริปต์ SQL ข้อความล้วนที่ไม่บีบอัดให้เป็นไฟล์สำรองฐานข้อมูลรูปแบบเฉพาะที่ปรับให้เหมาะสม จะช่วยลดพื้นที่จัดเก็บและเร่งการกู้คืนบนเซิร์ฟเวอร์