0

あるデータベースから余分なデータをすべて取得し、別のデータベースに挿入しようとしています。しかし、列名を省略したいので、これを実現するためにテーブル名のみをハードコーディングしようとしています。ただし、ID のようなテーブルでシステム生成されるフィールドがいくつかありますが、これはデータとしてはそれほど必要ではありませんが、それでも整合性の問題が発生します。上記の列を省略して詳細を挿入するにはどうすればよいですか。省略する列の名前も変更されます。完全な挿入はできません。余分なデータを追加するだけです。

これまでのところ、私はこれに来ました。

while 1=1
begin
if exists(select 1 from db1.table1 not in (select * from db2.table1)
begin
insert into db2.table1 (columns) select (columns) from db1.table1
end
if(rowCount=0)
break
end

ハードコーディングを最小限に抑えるためにこれを最適化する方法を教えてください クエリが大きいため、意図的に pk 部分を残しました。

4

1 に答える 1

1

次のようなことをしたい場合:

insert into TAB
select * from TAB2

また

insert into TAB
select col1,col2 from TAB2

また

insert into TAB (col1,col2)
select * from TAB2

TAB1 と TAB2 の列の数またはタイプが異なる場合、エラーが発生するため、これは不可能です。

于 2012-10-25T10:43:28.937 に答える