Jawaban:
INSERT INTO TARGET_TABLE SELECT * FROM SOURCE_TABLE;
EDIT: atau jika tabel memiliki struktur yang berbeda, Anda juga dapat:
INSERT INTO TARGET_TABLE (`col1`,`col2`) SELECT `col1`,`col2` FROM SOURCE_TABLE;
EDIT: untuk membatasi ini ..
INSERT INTO TARGET_TABLE (`col1_`,`col2_`) SELECT `col1`,`col2` FROM SOURCE_TABLE WHERE `foo`=1
Jika tabel tidak ada, Anda dapat membuatnya dengan skema yang sama seperti:
CREATE TABLE table2 LIKE table1;
Kemudian, untuk menyalin data ke:
INSERT INTO table2 SELECT * FROM table1
SELECT * INTO newTable FROM sourceTable
di w3school , mengapa tidak berfungsiMySQL
SELECT ... INTO
dimaksudkan untuk mengekspor tabel ke file output, atau ke variabel; tidak langsung ke meja. Lihat dev.mysql.com/doc/refman/5.7/en/select-into.html
Jika tabel1 besar dan Anda tidak ingin menguncinya selama proses penyalinan, Anda dapat melakukan dump-and-load sebagai gantinya:
CREATE TABLE table2 LIKE table1;
SELECT * INTO OUTFILE '/tmp/table1.txt' FROM table1;
LOAD DATA INFILE '/tmp/table1.txt' INTO TABLE table2;
show processlist
, saya tidak dapat melihat kueri apa pun yang sedang berjalan. Tidak yakin apa masalahnya.
Jika Anda ingin membuat dan menyalin konten dalam satu pengambilan, cukup gunakan SELECT:
BUAT TABEL new_tbl SELECT * FROM orig_tbl;
Ini berhasil untuk saya. Anda dapat membuat pernyataan SELECT lebih kompleks, dengan klausa WHERE dan LIMIT.
Pertama, duplikat tabel besar Anda (tanpa data), jalankan kueri berikut, lalu potong tabel yang lebih besar.
INSERT INTO table_small (SELECT * FROM table_large WHERE column = 'value' LIMIT 100)
Sangat sederhana. :-)
CREATE TABLE target_table SELECT * FROM source_table;
Ini hanya membuat tabel baru dengan struktur yang sama seperti tabel sumber dan juga menyalin semua baris dari source_table ke target_table.
CREATE TABLE target_table SELECT * FROM source_table WHERE condition;
Jika Anda membutuhkan beberapa baris untuk disalin ke target_table, maka terapkan kondisi di dalam klausa where
Coba ini. Bekerja dengan baik di Oracle 10g saya,
CREATE TABLE new_table
AS (SELECT * FROM old_table);