ฉันกำลังมองหาไวยากรณ์สำหรับการทิ้งข้อมูลทั้งหมดในฐานข้อมูล mysql ของฉัน ฉันไม่ต้องการข้อมูลตารางใด ๆ
ฉันกำลังมองหาไวยากรณ์สำหรับการทิ้งข้อมูลทั้งหมดในฐานข้อมูล mysql ของฉัน ฉันไม่ต้องการข้อมูลตารางใด ๆ
คำตอบ:
mysqldump --no-create-info ...
นอกจากนี้คุณอาจใช้:
--skip-triggers
: ถ้าคุณใช้ทริกเกอร์--no-create-db
: ถ้าคุณใช้--databases ...
ตัวเลือก--compact
: ถ้าคุณต้องการกำจัดความคิดเห็นเพิ่มเติมmysqldump -u USERNAME -h HOST --no-create-info --skip-triggers YOURDATABASENAME YOURTABLENAME --where='id=12345678'
Access denied for user ... to database '...' when doing LOCK TABLES
ให้ใช้--single-transaction
--where
ผมใช้คำพูดคู่สำหรับ ตัวอย่างเช่น--where="id=2"
สิ่งนี้น่าจะใช้ได้:
# To export to file (data only)
mysqldump -u [user] -p[pass] --no-create-info mydb > mydb.sql
# To export to file (structure only)
mysqldump -u [user] -p[pass] --no-data mydb > mydb.sql
# To import to database
mysql -u [user] -p[pass] mydb < mydb.sql
หมายเหตุ:ไม่มีที่ว่างระหว่าง-p
&[pass]
--no-create-db
ซ้ำซ้อนเมื่อใช้--no-create-info
-p
ไม่เป็นไร
ps -ef
)
-p
ตัวเลือกจะmysqldump
แจ้งให้ใส่รหัสผ่าน
>> man -k mysqldump [enter in the terminal]
คุณจะพบคำอธิบายด้านล่าง
- ไม่มีการสร้างข้อมูล -t
อย่าเขียนคำสั่ง CREATE TABLE ที่สร้างแต่ละตารางที่ดัมพ์อีกครั้ง หมายเหตุตัวเลือกนี้ไม่ได้แยกคำสั่งที่สร้างกลุ่มล็อกไฟล์หรือพื้นที่ตารางจากเอาต์พุต mysqldump อย่างไรก็ตามคุณสามารถใช้ตัวเลือก --no-tablespaces เพื่อจุดประสงค์นี้
- ไม่มีข้อมูล -d
ห้ามเขียนข้อมูลแถวของตารางใด ๆ (นั่นคือห้ามดัมพ์เนื้อหาของตาราง) สิ่งนี้มีประโยชน์หากคุณต้องการดัมพ์เฉพาะคำสั่ง CREATE TABLE สำหรับตาราง (ตัวอย่างเช่นเพื่อสร้างสำเนาเปล่าของตารางโดยการโหลดไฟล์ดัมพ์)
# To export to file (data only)
mysqldump -t -u [user] -p[pass] -t mydb > mydb_data.sql
# To export to file (structure only)
mysqldump -d -u [user] -p[pass] -d mydb > mydb_structure.sql
หากคุณต้องการคำสั่ง INSERT ให้ใช้คำสั่งต่อไปนี้:
mysqldump --skip-triggers --compact --no-create-info
--compact
ที่กำจัดข้อความแสดงความคิดเห็นเพิ่มเติม
อยากจะแนะนำให้ใช้ตัวอย่างต่อไปนี้ ทำงานได้ดีแม้กับตารางขนาดใหญ่ (ไม่เช่นนั้นคุณจะเปิดการถ่ายโอนข้อมูลในเครื่องมือแก้ไขและตัดสิ่งที่ไม่ต้องการใช่ไหม?)
mysqldump --no-create-info --skip-triggers --extended-insert --lock-tables --quick DB TABLE > dump.sql
อย่างน้อยต้องใช้mysql 5.xแต่ใครจะใช้ของเก่าในปัจจุบัน .. :)
ลองดัมพ์เป็นไฟล์ที่มีการคั่น
mysqldump -u [username] -p -t -T/path/to/directory [database] --fields-enclosed-by=\" --fields-terminated-by=,
เมื่อพยายามส่งออกข้อมูลโดยใช้คำตอบที่ยอมรับฉันได้รับข้อผิดพลาด:
ERROR 1235 (42000) at line 3367: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
ดังกล่าวข้างต้น:
mysqldump --no-create-info
จะส่งออกข้อมูล แต่จะส่งออกคำสั่งสร้างทริกเกอร์ด้วย ถ้าชอบโครงสร้างฐานข้อมูลที่แสดงผลของคุณ (ซึ่งรวมถึงทริกเกอร์) ด้วยคำสั่งเดียวจากนั้นใช้คำสั่งด้านบนเพื่อรับข้อมูลคุณควรใช้ '--skip-triggers'
ดังนั้นหากคุณต้องการเพียงแค่ข้อมูล:
mysqldump --no-create-info --skip-triggers