2013-03-27 20 views
7

私の古いデータベーステーブルから新しいデータベーステーブルに値を取得したい。dbから別のdbにデータを挿入

旧DB構造:

表I:Country

  • CountryId
  • COUNTRYNAME

新しいDB構造

表II:Countries

  • 同上
  • 名前

私は、次のINSERTクエリなどを使用

select 'insert into Countries (Id, Name) select ', countryid, countryname from Country 

しかし、私は

  • insert into Countries(Id,Name) select 1 India
  • 、のような結果を持っています

そうです。

が、私はこれを達成するために

insert into Countries (Id, Name) values (1, 'India') 

、のような結果を必要とする、クエリは何ですか?

答えて

10

転送するデータが多く、複数のテーブルがある場合は、SQL Server Management Studioのインポート/エクスポートウィザードを使用することをお勧めします。

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 
+1

素晴らしい!それは働いています..thanks – PoliDev

+0

うわー、私は前にインポート/エクスポートwizadを試みたことはありません。ありがとうミスター@NenadZivkovic –

5

使用簡単なINSERT文(データベース名[SCHEMA_NAME] .table。)...私を助けて、両方のデータベースが1台のサーバーにある場合は

INSERT [NewDB].[your_schema].[Countries](Id,Name) 
SELECT CountryId, CountryName 
FROM [OldDB].[your_schema].[Country] 
4

、あなたはこのように行うことができます。

insert into [db1name].[dbo].[Countries] (Id, Name) 
select CountryId, CountryName 
from [db2name].[dbo].[Countries] 
where _your where clause_ 

ご希望の場合

3

本当にあなたが書いた質問は実際には得られません。 クエリから文字列を作成して、データベースに再び渡しますか?

ちょうど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 

EDIT:以前のポスターが述べたように、このために私はちょうどそれがそうであったと仮定していることについては何も言わなかったので、あなたは、同じサーバー上の両方のデータベースを必要と動作するように? :D

関連する問題