2017-11-06 5 views
0

私はデータベースAに対して実行するSQLスクリプトを作成する必要があり、できるだけINSERT文を含む別のSQLスクリプトを出力するという奇妙なSQL状況があります。次にデータベースBに対して実行し、データをアップロードします(基本的にAからBへのエクスポートがより長い方法です)。別の[INSERT] SQLスクリプトを生成するSQLスクリプト

[Database A].[Table Student]のデータを含むINSERTの文を生成する方法を提案できる人がいるかどうか疑問に思っていたので、[Database B].[Table Student]にアップロードすることができます。

ありがとうございます。

+0

を、より容易な方法があります。たとえば、.dacpacをエクスポートできます。 –

答えて

1

あなたは、

SELECT concat('Insert INTO Students VALUES(', Col1,', ', '''', Col2, '''', ')') 
    AS [Details] 
    FROM Student 
    WHERE ... 

N.B 4つの単一引用符は、たとえばvarchar列の前後に単一引用符を作成することです。このことから、新たなSQLスクリプトを生成するには

、私のようなもので、CMDファイルを作成したい:バージョンによって

SET SERVER=YOUR_SERVER 
SET DATABASE=YOUR_DB 

sqlcmd -S %SERVER% -d %DATABASE% -h -1 -i Script.sql -o NewScript.sql -W 
+0

これは私が必要としたものです...あなたの助けをたくさんありがとう。 – Amar

0

- あなたは簡単な使用は、ここでステートメントに

INSERT INTO [Database B].[Table Student] 
SELECT * FROM [Database A].[Table Student] 
WHERE StudentID NOT IN (SELECT StudentID FROM [Database B].[Table Student]) 
0

を挿入することができますが、両方へのアクセス権を持っている場合は、他のデータベーステーブルにあるデータベーステーブルからデータを挿入する一つの方法

INSERT INTO [DestinationDB].[dbo].Student 
SELECT * FROM [SourceDB].[dbo].Student 
GO 
+0

こんにちは、ありがとう、返信してください。これははるかに簡単で「論理的な」方法ですが、INSERT stmtsを含む別のスクリプトを出力するスクリプトを作成する必要があります。奇妙な、私は知っている:(。 – Amar

0

ですあなたは次のような1つのクエリでそれを行うことができます:

INSERT INTO [Database A].[Table Student] 
OUTPUT inserted.* 
INTO [Database B].[Table Student] 
SELECT * 
FROM [newdata]; 
関連する問題