การถ่ายโอนข้อมูลของตาราง mysql ในการนำเข้าแทนที่ระเบียนที่มีอยู่


9

ฉันถ่ายโอนข้อมูลโดยใช้ mysqldump ..

mysqldump -u... -p... mydb t1 > mydb_table.sql

จากนั้นฉันก็นำเข้าดัมพ์ในฐานข้อมูลอื่นที่มีตารางเดียวกัน แต่บันทึกต่างกัน ..

mysql -u...-p... mydb < mydb_tables.sql

การอิมพอร์ต db มีเร็กคอร์ดจาก primary_key 1 ถึง 1,000 และการเอ็กซ์พอร์ต db มี 5,000 ถึง 10,000 ..

แต่เมื่อนำเข้าระเบียนที่มีอยู่เช่น 1 ถึง 1,000 ถูกลบ ..

วิธี ?? ทำไม?? ถ้ามันเป็นพฤติกรรมเริ่มต้นตัวเลือกอะไรที่ฉันสามารถให้กับการถ่ายโอนข้อมูลเพื่อไม่ให้มันเกิดขึ้นในครั้งต่อไป ..

คำตอบ:


12

โดยค่าเริ่มต้น mysqldump จะวางตาราง คุณควรระบุ--no-create-infoตัวเลือกดังนี้:

mysqldump -u... -p... --no-create-info --skip-extended-insert mydb t1 > mydb_table.sql

ด้วยวิธีนี้คุณมีส่วนแทรกที่จะจัดการเท่านั้น การใช้--skip-extended-insertจะแทรกครั้งละหนึ่งแถว ความช่วยเหลือนี้จัดการกับปัญหาซ้ำซ้อน แต่คุณจะต้องนำเข้าเช่นนี้

mysql -u...-p... --force mydb < mydb_tables.sql

--forceตัวเลือกสำหรับวัตถุประสงค์ในการแทรกอย่างต่อเนื่องในกรณีที่คีย์ที่ซ้ำกันจะพบ ในอินสแตนซ์นั้นข้อผิดพลาดของการละเมิด INSERT จะถูกละเว้นและไปยัง INSERT ถัดไป


เป็นไปได้ไหมที่จะดึงข้อมูลที่ถูกลบทิ้งระหว่างการถ่ายโอนข้อมูลกลับคืน?
Arun Kumaresh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.