3

私は 330 万件のレコードのテーブルを持っており、dev から prod にすべてをコピーしたくありません (クライアント制御のマシン上で、リンク サーバーを正しく動作させることができません)。

これらのレコードを 300 ほどコピーしたいだけです。300 個の挿入ステートメントを生成するにはどうすればよいですか?

挿入が必要な選択SQLは次のとおりです。

select * from data where ID > 9000;

すべての INSERTS を出力するクエリが必要なので、実稼働ボックスでコピーして実行できます。

4

1 に答える 1

2

バージョン 2008 にはそのためのウィザード ツールがあるため、投稿に SQL-Server-2005 というタグを付けたのは残念です。

連結された文字列から挿入ステートメントを作成できます。

field1 が文字列で、field2 が数値の場合:

select 'insert into data (field1, field2) values('' || field1 || '', ' || char(field2) ||');' from data where ID < 9000;

文字列に引用符が必要であることを考えると、列が多数ある場合は明らかに時間がかかります。も使用して数値列を変換する必要がある場合がありますchar()

これにより、次のような挿入ステートメントのリストが表示されます。

insert into data (field1, field2) values('A', 10);
insert into data (field1, field2) values('B', 20);
insert into data (field1, field2) values('C', 30);

これは最もエレガントな方法ではないかもしれませんが、うまくいきます。

于 2012-11-22T04:02:50.730 に答える