Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

คัดลอกตารางจาก Database หนึ่งไปอีก Database ใน MySQL

ใช้ INSERT INTO ... SELECT ระหว่าง Database โดยระบุ database.table ให้ชัดเจน

Syntax

INSERT INTO destination_db.table_name 
SELECT * FROM source_db.table_name;

ตัวอย่างเต็ม

1. สร้างตารางใน Database business (Source)

USE business;
CREATE TABLE OriginalTable (id INT);
INSERT INTO OriginalTable VALUES (1), (2), (3), (4);

2. สร้างตารางใน Database test (Destination)

USE test;
CREATE TABLE OriginalTable (id INT);

3. คัดลอกข้อมูลข้าม Database

INSERT INTO test.OriginalTable 
SELECT * FROM business.OriginalTable;
-- Query OK, 4 rows affected

4. ตรวจสอบ

USE test;
SELECT * FROM OriginalTable;
+------+
| id   |
+------+
| 1    |
| 2    |
| 3    |
| 4    |
+------+

วิธีอื่นๆ

1. CREATE TABLE ... SELECT (สร้างโครงสร้าง + ข้อมูลพร้อมกัน)

CREATE TABLE test.NewTable AS 
SELECT * FROM business.OriginalTable;

⚠️ ไม่คัดลอก Index, Primary Key, Auto Increment, Foreign Key, Triggers

2. mysqldump (สำหรับ Production/Migration)

# Export Structure + Data
mysqldump -u root -p business OriginalTable > table.sql

# Import to another DB
mysql -u root -p test < table.sql

# หรือ Pipe โดยตรง
mysqldump -u root -p business OriginalTable | mysql -u root -p test

3. SELECT INTO OUTFILE / LOAD DATA INFILE (File-based)

-- Export
SELECT * FROM business.OriginalTable 
INTO OUTFILE '/tmp/table.csv' 
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

-- Import
LOAD DATA INFILE '/tmp/table.csv' 
INTO TABLE test.OriginalTable
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

ข้อควรระวัง

  • โครงสร้างตาราง (Schema) ต้องเหมือนกัน (Column Count, Order, Type)
  • Auto Increment: Destination ต้องมีค่าเริ่มต้นที่ไม่ชน
  • Foreign Keys: ต้องสร้างใน Destination เอง
  • Triggers/Views/Procedures: ไม่ถูกคัดลอก ต้อง Export แยก
  • Permissions: User ต้องมี INSERT บน Destination, SELECT บน Source

แนะนำ

  • Development/Small Data: INSERT INTO ... SELECT หรือ CREATE TABLE ... SELECT
  • Production/Migration: mysqldump (Concurrency, Consistency, Metadata)
  • Large Data (Millions): LOAD DATA INFILE หรือ pt-archiver (Percona Toolkit)