次のようなSQL(Oracle用)を書いています:
INSERT INTO Schema1.tableA SELECT * FROM Schema2.tableA;
ここで、Schema1.tableA と Schema2.tableA には同じ列があります。ただし、SELECT で返される列の順序が定義されていないため、これは安全ではないようです。私がすべきことは次のとおりです。
INSERT INTO Schema1.tableA (col1、col2、... colN) SELECT (col1、col2、... colN) FROM Schema2.tableA;
私はいくつかのスクリプトを使用して多くのテーブルに対してこれを行っているので、次のようなものを書きたいと思います:
INSERT INTO Schema1.tableA (foo(Schema1.tableA)) SELECT (foo(Schema1.tableA)) FROM Schema2.tableA;
foo は、テーブル 1 から列名を抽出し、適切な構文でパッケージ化する気の利いた魔法です。考え?