0

リンク サーバー経由で Oracle DB を SQL Server に移行しています。これが私の質問です。

次のようなOracleのテーブルがあります。

旧人事表

PERSONID SSN  COUNTRY   CITY
-------------------------------
   1     123  RUSSIA    MOSCOW
   2     124  TURKEY    ISTANBUL
   3     125  TURKEY    ANKARA

そして、私の新しい SQL Server データベースには、次のようなテーブルがあります。

国表

COUNTRYID COUNTRYNAME
---------------------    
1         RUSSIA
2         TURKEY

シティテーブル

CITYID COUNTRYID CITYNAME
-------------------------    
1          1      MOSCOW
2          2      ISTANBUL
3          2      ANKARA

新しい人事テーブル

PERSONID SSN  COUNTRY   CITY
1        123   1          1
2        124   2          2
3        125   2          3

はい、それだけです。OldDatabase から選択する挿入クエリを作成し、新しい個人テーブルに挿入したいだけです。古いデータベースには、都市と国の ID テーブルがありません。参加する唯一のチャンスは、都市と国の名前を見るときです。

編集:都市名は一意ではありません。

どんな助けでも大歓迎です。

4

2 に答える 2

1

CITYTABLEとがすでに入力されていると仮定すると、次のようCountryTableに入力できます。NewPersonelTable

PERSONID が NewPersonelTable の主キーである場合、おそらく次のことを行う必要があります。

SET IDENTITY_INSERT ON

次に実行します:

INSERT INTO NewPersonelTable ( PERSONID, SSN, COUNTRY, CITY )
SELECT T.PERSONID, T.SSN, C.COUNTRYID, CITY.CITYID
FROM OldPersonelTable T JOIN CountryTable C ON
  T.COUNTRY = C.COUNTRYNAME JOIN CITYTABLE CITY ON
  T.CITY = CITY.CITYNAME AND
  C.COUNTRYID = CITY.COUNTRYID
于 2012-12-24T10:48:54.650 に答える
0

この移行タスクを実行するには、次の 2 つの手順を実行する必要があります。1- メイン データをコピーする 2- リレーショナル データをコピーする

最初に、新しいテーブルの主キーが IDENTITY であることを確認してください。1) データのコピー

INSERT INTO CountryTable(COUNTRYNAME)
SELECT DISTINCT COUNTRY FROM OraLink...OldPersonelTable

INSERT INTO CityTable(CITYNAME)
SELECT DISTINCT CITY FROM OraLink...OldPersonelTable

INSERT INTO NewPersonelTable(SSN)
SELECT DISTINCT SSN FROM OraLink...OldPersonelTable

2) 関係のコピー

UPDATE CityTable SET COUNTRYID=CountryTable.COUNTRYID 
FROM OraLink...OldPersonelTable O INNER JOIN CountryTable
ON O.Country=CountryTable.COUNTRYNAME
WHERE CITYNAME=City

UPDATE NewPersonelTable SET COUNTRY=CountryTable.COUNTRYID, CITY=CityTable.CITYID
FROM OraLink...OldPersonelTable O INNER JOIN CountryTable
ON O.Country=CountryTable.COUNTRYNAME
INNER JOIN CityTable ON O.CITY=CityTable.CITYNAME
WHERE NewPersonelTable.SSN=O.SSN
于 2012-12-26T20:58:01.470 に答える