Saya baru mengenal MySQL. Saya ingin menyalin konten dari satu tabel ke tabel lain dalam database yang sama. Pada dasarnya, saya ingin menyisipkan ke tabel dari tabel lain. Apakah ada cara mudah untuk melakukan ini?
118
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:
Kemudian, untuk menyalin data ke:
sumber
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.htmlJika tabel1 besar dan Anda tidak ingin menguncinya selama proses penyalinan, Anda dapat melakukan dump-and-load sebagai gantinya:
sumber
show processlist
, saya tidak dapat melihat kueri apa pun yang sedang berjalan. Tidak yakin apa masalahnya.Ini berhasil untuk saya,
CREATE TABLE newtable LIKE oldtable;
Mereplikasi tabel baru dengan tabel lama
INSERT newtable SELECT * FROM oldtable
;Salin semua data baris ke tabel baru.
Terima kasih
sumber
Jika Anda ingin membuat dan menyalin konten dalam satu pengambilan, cukup gunakan SELECT:
sumber
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.
Sangat sederhana. :-)
sumber
Ini hanya membuat tabel baru dengan struktur yang sama seperti tabel sumber dan juga menyalin semua baris dari source_table ke target_table.
Jika Anda membutuhkan beberapa baris untuk disalin ke target_table, maka terapkan kondisi di dalam klausa where
sumber
Coba ini. Bekerja dengan baik di Oracle 10g saya,
sumber