Yanıtlar:
INSERT INTO TARGET_TABLE SELECT * FROM SOURCE_TABLE;
DÜZENLE: veya tabloların farklı yapıları varsa, şunları da yapabilirsiniz:
INSERT INTO TARGET_TABLE (`col1`,`col2`) SELECT `col1`,`col2` FROM SOURCE_TABLE;
DÜZENLEME: bunu sınırlamak için ..
INSERT INTO TARGET_TABLE (`col1_`,`col2_`) SELECT `col1`,`col2` FROM SOURCE_TABLE WHERE `foo`=1
Tablo yoksa, aynı şemaya sahip bir tane oluşturabilirsiniz:
CREATE TABLE table2 LIKE table1;
Ardından verileri kopyalamak için:
INSERT INTO table2 SELECT * FROM table1
SELECT ... INTO, bir tabloyu bir çıktı dosyasına veya değişkenlere aktarmak içindir; doğrudan masaya değil. Bkz. Dev.mysql.com/doc/refman/5.7/en/select-into.html
Tablo1 büyükse ve kopyalama işlemi süresince onu kilitlemek istemiyorsanız, bunun yerine bir döküm ve yükleme yapabilirsiniz:
CREATE TABLE table2 LIKE table1;
SELECT * INTO OUTFILE '/tmp/table1.txt' FROM table1;
LOAD DATA INFILE '/tmp/table1.txt' INTO TABLE table2;
show processlist, çalışan herhangi bir sorgu göremedim. Sorunun ne olduğundan emin değilim.
İçeriği tek çekimde oluşturmak ve kopyalamak istiyorsanız, SEÇİM'i kullanın:
TABLO OLUŞTUR new_tbl SELECT * Orig_tbl'den;
Bu benim için çalıştı. SELECT deyimini WHERE ve LIMIT yan tümceleriyle daha karmaşık hale getirebilirsiniz.
Önce büyük tablonuzu çoğaltın (veriler olmadan), aşağıdaki sorguyu çalıştırın ve ardından daha büyük tabloyu kesin.
INSERT INTO table_small (SELECT * FROM table_large WHERE column = 'value' LIMIT 100)
Çok basit. :-)
CREATE TABLE target_table SELECT * FROM source_table;
Sadece kaynak tablo ile aynı yapıya sahip yeni bir tablo oluşturur ve tüm satırları source_table'dan target_table'a kopyalar.
CREATE TABLE target_table SELECT * FROM source_table WHERE condition;
Target_table'a kopyalanacak bazı satırlara ihtiyacınız varsa, where cümlesinin içine bir koşul uygulayın
Bunu dene. Oracle 10g'mde iyi çalışıyor,
CREATE TABLE new_table
AS (SELECT * FROM old_table);