ฉันต้องการคัดลอกตารางที่มีอยู่จากฐานข้อมูลหนึ่งและแทรกลงในตารางฐานข้อมูลอื่น


97

ฉันต้องการคัดลอกสคีมาของตารางรวมทั้งข้อมูลภายในตารางนั้นไปยังตารางฐานข้อมูลอื่นในฐานข้อมูลอื่นบนเซิร์ฟเวอร์ที่ใช้งานจริง ฉันจะทำสิ่งนี้ได้อย่างไร?


ใช้การเชื่อมต่อฐานข้อมูลสองรายการและอ่านโครงสร้างตารางจากที่หนึ่งและเรียกใช้แบบสอบถามนั้นไปยังอีก
Dau

ฐานข้อมูลเหล่านี้อยู่ในอินสแตนซ์ mysql แยกกันหรือเป็นฐานข้อมูลเดียวกัน สามารถตั้งค่าอินสแตนซ์ที่แตกต่างกันด้วยการจำลองแบบได้หากเป็นกระบวนการต่อเนื่อง
นิค

@Nick ฐานข้อมูลของฉันอยู่ในอินสแตนซ์ mysql ที่แตกต่างกัน คุณช่วยอธิบายวิธีการคัดลอกได้ไหม
johk95

คำตอบ:


219

หากคุณต้องการคัดลอกตารางจากฐานข้อมูลหนึ่งไปยังฐานข้อมูลอื่นคุณสามารถทำได้ดังนี้

CREATE TABLE db2.table LIKE db1.table;
INSERT INTO db2.table SELECT * FROM db1.table;

2
ทางออกที่ดีหากตารางไม่มีข้อ จำกัด ของคีย์ต่างประเทศ ฉันใช้สิ่งนี้เพื่อสร้างสำเนาของฐานข้อมูลทั้งหมดแทนที่จะเป็นเพียงตารางเดียว สำหรับสิ่งนั้นฉันขอแนะนำให้ใช้คำสั่ง mysqldump
thorne51

ขณะนี้ MySQL สามารถจัดเก็บข้อมูลตารางในแต่ละไฟล์ได้แล้ว (และไฟล์ frm ต่อตารางมากเกินไป) วิธีนี้ไม่ต้องสงสัยเลยว่าใช้ได้ผล แต่ด้วยฐานข้อมูลขนาดใหญ่มันช้า มีวิธีอื่นอีกไหม
Alex Kovshovik

1
สิ่งนี้ใช้ได้เฉพาะเมื่อฐานข้อมูลอยู่บนเซิร์ฟเวอร์เดียวกัน
zgr024

10

หรือเพียงแค่สร้างตาราง db2.table SELECT * จาก db1.table ใน MySQL 5


4
สิ่งนี้ไม่ได้คัดลอกสิ่งต่างๆเช่นดัชนี มันเป็นเพียงการสร้างตารางตามชุดของสิ่งที่เพิ่มขึ้น คุณคงไม่อยากทำแบบนี้
BenMQ

ใช่คำถามนี้ไม่ได้คัดลอก indexe
XxXk5XxX





0

ใน Commandline:

mysqldump -h localhost -u username -ppassword [SCHEMA] --tables [TABLE] | mysql -h otherhost -u username -ppassword [SCHEMA2]

สิ่งนี้จะคัดลอกตารางภายใน SCHEMA บน localhost ไปยัง SCHEMA2 บนโฮสต์อื่น

localhost และ otherhost เป็นเพียงชื่อโฮสต์และอาจเหมือนหรือต่างกัน

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