古いデータベーステーブルから新しいデータベーステーブルに値を取得したいと思います。
古いdb構造:
表I:Country
新しいデータベース構造
表II:Countries
次のような挿入クエリを使用しました。
_select 'insert into Countries (Id, Name) select ', countryid, countryname from Country
_
しかし、私は次のような結果になります。
insert into Countries(Id,Name) select 1 India
insert into Countries(Id,Name) select 2 Any Country
そのように。
しかし、私は次のような結果が必要です、
_insert into Countries (Id, Name) values (1, 'India')
_
これを達成するために、クエリは何ですか?助けて...
転送するデータが多く、複数のテーブルがある場合は、SQL Server ManagementStudioが提供するインポート/エクスポートウィザードを使用することをお勧めします。
http://www.mssqltips.com/sqlservertutorial/203/simple-way-to-import-data-into-sql-server/
編集:ただし、データが多くなく、2つのシステムが接続されていない場合、データを転送するためのスクリプトを生成する必要がある場合、クエリは次のようになります。
SELECT 'INSERT INTO Countries (Id, Name) VALUES (' + CAST(countryid AS VARCHAR(50)) + ', ''' + countryname + ''')' from Country
単純なINSERTステートメントを使用します(database_name。[schema_name] .table)
INSERT [NewDB].[your_schema].[Countries](Id,Name)
SELECT CountryId, CountryName
FROM [OldDB].[your_schema].[Country]
両方のデータベースが1つのサーバー上にある場合は、次のようにすることができます。
insert into [db1name].[dbo].[Countries] (Id, Name)
select CountryId, CountryName
from [db2name].[dbo].[Countries]
where _your where clause_
お役に立てれば
正直なところ、あなたが書いたクエリは実際には得られません。クエリから文字列を作成し、それをデータベースに再度渡そうとしていますか?
1つのクエリで1つのデータベースから別のデータベースに値を渡すことができます。
/*
maybe you need to switch off identity on your target table
to get your original id values into the target table like this:
(without comment ofc ;))
*/
--SET IDENTITY_INSERT TargetDatabase.dbo.Countries ON
INSERT INTO TargetDatabase.dbo.Countries (Id, Name)
SELECT
CountryId, CountryName
FROM SourceDatabase.dbo.Country
--SET IDENTITY_INSERT TargetDatabase.dbo.Countries OFF
または、一時テーブルを使用して、元の値を取得した後でデータベース接続を切り替えることもできます。
USE SourceDatabase
DECLARE @TempTable TABLE (CountryId INT PRIMARY KEY, CountryName NVARCHAR(MAX))
INSERT INTO @TempTable (CountryId, CountryName)
SELECT
CountryId, CountryName
FROM Country
USE TargetDatabase
/*
maybe you need to switch off identity on your target table
to get your original id values into the target table like this:
(without comment ofc ;))
*/
--SET IDENTITY_INSERT Countries ON
INSERT INTO Countries (Id, Name)
SELECT
CountryId, CountryName
FROM @TempTable
--SET IDENTITY_INSERT Countries OFF
編集:前のポスターが述べたように、これが機能するためには、同じサーバー上に両方のデータベースが必要です。あなたはそれについて何も言わなかったので、私はそれが事実だと思っていましたか? :D