Verileri bir tablodan diğerine kopyalamam gerekir. Tabloların hepsi aynı sütunlara veya sıralamaya sahip değildir; ancak kopyalanacak veriler her zaman aynı sütunlardadır; foo
numaralı sütundan gelen veriler foo
sütunlarına kopyalanmalıdır.Tablo sütunlarını ortak sütunlarla kopyalama
INSERT INTO table_target (column1, column2, column4)
SELECT column1, column2, column4 FROM table_source;
Ancak birkaç düzine tablolar vardır ve bazı ekstra dönüşüm yapılması gerektiğini, bu yüzden güzel olurdu: o Sadece gibi sütun adlarını hardcode olabilir sadece iki tablo olsaydı
Sadece söyleyebilseydim: Eşleşen sütunları kopyala ve geri kalanını görmezden gel.
Genel sütunların listesini nasıl alacağımı bulmayı başardım, ancak şimdi takılıyorum. Ben iyi etki için geçmişte kullanmış
SELECT src.col
FROM (SELECT COLUMN_NAME as col
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'table_target') as trg
INNER JOIN
(SELECT COLUMN_NAME as col
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'table_source') as src ON (src.col=trg.col)
;
Dinamik sql'yi kullanabilir misiniz? Başka bir programlama dili içinde SQL kullanıyor musunuz? – golimar
bu bir seferlik görev gibi geliyor. Bu doğru mu? Ya da tekrar tekrar çalışmak zorunda olan, belki de üretimde olan bir şey mi? Tek seferlik bir şey ise, daha fazla SQL oluşturmak için yukarıdaki kodu (bazı değişikliklerle) kullanabilir ve ardından oluşturulan SQL'i çalıştırabilirsiniz. – MJB
Evet, bu bir kerelik bir sorgudur ve son kullanmadığım çözüm esasen bu iki aşamalı işlemdir. Yine de, "düzgün" nasıl yapılacağını bilmek güzel olurdu. – Odalrick