2011-09-22 9 views
47

同じデータを別のデータベースに挿入するには、INSERTスクリプトを作成する必要があります。
SQL Serverで "Script table as> INSERT To"を選択した場合、INSERTステートメントのスケルトンを簡単に再作成できます。しかし、移行するレコードがいくつかあるので、手動で値を挿入する必要はありません。テーブルから収集した値を持つSQL INSERTスクリプトを作成する

したがって、(ターゲットテーブルからの)値も入力してINSERTスクリプトを自動的に取得する方法はありますか?

これはSSISで行うことができますが、より迅速なソリューションでも可能かどうかは疑問です。

答えて

94

SSMSでこれを行うことができます。

1 - オブジェクトエクスプローラでデータベースを右クリックします。
2 - ...スクリプトの生成/
3をタスクを選択 - の設定スクリプトのオプションページで、高度ボタンをクリックして、スクリプトにデータの確認種類を作るデータのみに設定されています。

結果のスクリプトの先頭にUSE DATABASEというステートメントがあります。これをデータを挿入するデータベースに変更します。

+4

ツール/オプション/ SQL Serverオブジェクトエクスプローラ/スクリプト/一般的なスクリプトオプション/スクリプトの下で 'USE Database'コマンドをオフにすることができます

+0

また、生成されたT-SQLから手動でID列を削除する必要がありますif出力をテンプレートとして使用して新しいレコードを挿入するか、IDENTITY_INSERTをオンに設定しています。 –

6

エクスポートウィザード(確認のため、このPC上でそれを持っていない)無料SSMS tools pack to "generate insert statements"?

またはSSMSでを使用しますが、「スクリプトデータ」にすぎ

+0

エクスポートウィザードではデータをエクスポートできますが、データを含む文はエクスポートできません。しかし、ツール+1は、非常に良い見えます! – Francesco

+0

@ルーカ:ツールは不可欠です! SSMSウィザードに関するRedFilterの回答を確認してください。 – gbn

+0

SSMSツールパックhttp://www.ssmstoolspack.com/は素晴らしいです! –

1

あなたは条件付きで引用符で文字列値を囲むか、文字列として数値をキャストする必要があるので、それは、データの種類に依存しますs。

SELECT 'INSERT INTO dbo.DestinationTable(col1, col2, col3) 
    SELECT ' + CONVERT(VARCHAR(12), col1) + ',' 
     + '''' + REPLACE(col2, '''', '''''') + ''',' 
     + '''' + REPLACE(col3, '''', '''''') + ''';' 
    FROM dbo.SourceTable; 

Vyasには、この目的のためにpretty complex stored procedureがあります。もちろん

あなただけ言って、はるかに簡単にこれを行うことができます。つまり

INSERT INTO OtherDatabase.dbo.DestinationTable(col1, col2, col3) 
    SELECT col1, col2, col3 FROM dbo.SourceTable; 

を、あなたは、「スクリプト」挿入する必要はありません、あなたはそれを実行することができます...

+0

リモートアクセスなしでは完全に異なるイントラネット/サーバ上にない場合、2番目のアプローチは非常に簡単です:-( – Francesco

+0

@Luca、ファイルをエクスポートして持ち込みますSSISまたはインポートエクスポートウィザードを使用してください。 – HLGEM

+0

@HLGEM:RedFilterによって提供されるソリューションは、最も直接的なものであるため、私が探していたもののクローズです。 – Francesco

関連する問題