Tôi là người mới với mysql. Tôi muốn sao chép nội dung của một bảng sang bảng khác trong cùng một cơ sở dữ liệu. Về cơ bản, tôi muốn chèn vào một bàn từ một bàn khác. Có cách nào dễ dàng để làm điều này?
hỏi ngày 26 tháng 2 năm 2010 lúc 17:50Feb 26, 2010 at 17:50
Nếu các bảng có cùng cấu trúc:
INSERT INTO TARGET_TABLE SELECT * FROM SOURCE_TABLE;
Nếu các bảng có cấu trúc khác nhau:
INSERT INTO TARGET_TABLE [`col1`,`col2`] SELECT `col1`,`col2` FROM SOURCE_TABLE;
Bạn cũng có thể thêm điều kiện:
INSERT INTO TARGET_TABLE [`col1_`,`col2_`] SELECT `col1`,`col2` FROM SOURCE_TABLE WHERE `foo`=1
Pikamander2
6.5613 Huy hiệu vàng43 Huy hiệu bạc65 Huy hiệu Đồng3 gold badges43 silver badges65 bronze badges
Đã trả lời ngày 26 tháng 2 năm 2010 lúc 17:50Feb 26, 2010 at 17:50
GGIROUXGGIROUXggiroux
6,4361 Huy hiệu vàng21 Huy hiệu bạc23 Huy hiệu đồng1 gold badge21 silver badges23 bronze badges
1
Nếu bảng không tồn tại, bạn có thể tạo một cái có cùng lược đồ như vậy:
CREATE TABLE table2 LIKE table1;
Sau đó, để sao chép dữ liệu qua:
INSERT INTO table2 SELECT * FROM table1
Đã trả lời ngày 26 tháng 2 năm 2010 lúc 17:52Feb 26, 2010 at 17:52
GSTOGSTOGSto
40.8K37 Huy hiệu vàng128 Huy hiệu bạc179 Huy hiệu đồng37 gold badges128 silver badges179 bronze badges
3
Nếu Bảng 1 lớn và bạn không muốn khóa nó trong suốt thời gian của quá trình sao chép, bạn có thể thực hiện một lần nạp và tải thay thế: thay vào đó:
CREATE TABLE table2 LIKE table1;
SELECT * INTO OUTFILE '/tmp/table1.txt' FROM table1;
LOAD DATA INFILE '/tmp/table1.txt' INTO TABLE table2;
Đã trả lời ngày 26 tháng 2 năm 2010 lúc 19:13Feb 26, 2010 at 19:13
Ike Walkerike WalkerIke Walker
63.2K14 Huy hiệu vàng106 Huy hiệu bạc108 Huy hiệu đồng14 gold badges106 silver badges108 bronze badges
3
Điều này làm việc cho tôi,
INSERT INTO TARGET_TABLE [`col1`,`col2`] SELECT `col1`,`col2` FROM SOURCE_TABLE;
1Sao chép mới với bàn cũ
INSERT INTO TARGET_TABLE [`col1`,`col2`] SELECT `col1`,`col2` FROM SOURCE_TABLE;
2;Bản sao tất cả các dữ liệu hàng vào bảng mới.
Đã trả lời ngày 13 tháng 9 năm 2017 lúc 10:04Sep 13, 2017 at 10:04
JasonjasonJason
6315 Huy hiệu bạc17 Huy hiệu đồng5 silver badges17 bronze badges
Nếu bạn muốn tạo và sao chép nội dung trong một lần chụp, chỉ cần sử dụng
INSERT INTO TARGET_TABLE [`col1`,`col2`] SELECT `col1`,`col2` FROM SOURCE_TABLE;
3:CREATE TABLE new_tbl SELECT * FROM orig_tbl;
Jesse
6551 Huy hiệu vàng7 Huy hiệu bạc22 Huy hiệu đồng1 gold badge7 silver badges22 bronze badges
Đã trả lời ngày 27 tháng 2 năm 2010 lúc 9:33Feb 27, 2010 at 9:33
Frank Heikensfrank HeikensFrank Heikens
Huy hiệu vàng 111K2424 gold badges136 silver badges132 bronze badges
1
Điều này làm việc cho tôi. Bạn có thể làm cho câu lệnh Chọn phức tạp hơn, với các điều khoản và giới hạn.
Đầu tiên sao chép bảng lớn của bạn [không có dữ liệu], chạy truy vấn sau, sau đó cắt bớt bảng lớn hơn.
INSERT INTO table_small [SELECT * FROM table_large WHERE column = 'value' LIMIT 100]
Siêu đơn giản. :-]
Đã trả lời ngày 13 tháng 7 năm 2017 lúc 15:14Jul 13, 2017 at 15:14
CREATE TABLE target_table SELECT * FROM source_table;
Nó chỉ tạo một bảng mới có cùng cấu trúc như bảng nguồn và cũng sao chép tất cả các hàng từ Source_Table vào Target_Table.
CREATE TABLE target_table SELECT * FROM source_table WHERE condition;
Nếu bạn cần một số hàng để được sao chép vào Target_Table, thì hãy áp dụng một điều kiện bên trong mệnh đề nơiwhere clause
Đã trả lời ngày 4 tháng 8 năm 2020 lúc 9:44Aug 4, 2020 at 9:44
Jisnajisnajisna
2.0852 Huy hiệu vàng15 Huy hiệu bạc22 Huy hiệu đồng2 gold badges15 silver badges22 bronze badges
Thử cái này. Hoạt động tốt trong Oracle 10g của tôi,
INSERT INTO TARGET_TABLE [`col1`,`col2`] SELECT `col1`,`col2` FROM SOURCE_TABLE;
0
Rizier123
58K16 Huy hiệu vàng92 Huy hiệu bạc143 Huy hiệu Đồng16 gold badges92 silver badges143 bronze badges
Đã trả lời ngày 20 tháng 2 năm 2015 lúc 7:07Feb 20, 2015 at 7:07
2