あるデータベースから2つのテーブルをエクスポートし、対応するテーブルが空でない別のデータベースにデータをインポートするという定期的な作業があります。問題のテーブルの1つに、最初のIDを参照する列があります。それらをCustomerとCustomer_Addressと呼びましょう。ここで、Customer_AddressにはCustomerテーブルのIDを参照するCust_IDという列があります。リンクテーブルのIDをインクリメントしてINSERTスクリプトを作成する(SQLサーバー)
これらのためにインポートスクリプトを作成する必要があります。これは、顧客レコードをID = max(id)+1の他の空でないDBに追加し、各行に別のテーブルへのリンクを破棄しません。 Customer_Addressテーブルも同じようにインクリメントする必要がある独自のID列を持ちます。
最初に挿入したレコードを既存の最高のIDよりも1つ高くする必要はありませんが、それが最適です。私は過去に手動でターゲットDB内の最も高いIDをチェックし、検索と置換を使用してこの番号を追加し、インポートスクリプト内の変数を管理しましたが、途中でターゲットDBにレコードが追加されると面倒です。
ExcelでソーステーブルからIDを除いたすべての列を選択してSQLラップし、IDの代わりにselect(max)を使用する方法もありますが、やはり面倒です。データと
編集:(便宜上同じ/ temdbデータベースに)送信元と送信先テーブルを作成する サンプルスクリプトはここにある:次のように http://pastebin.com/C64wFtsP
は、出力を与える必要があります:
select * from customer
id Last First 1 Johnson James 2 Kelly Karl 3 Lawlor Liam
select * from customer2
id Last First 1 Adams Ann 2 Byrne Bressie 3 Casey Charlene
select * from customeraddress
id idclient street city county country 1 1 65 North St. Marcoussin Jojoba Flatland 2 2 42 South St. Marcoussin Jojoba Flatland 3 3 12 West St. Marcoussin Jojoba Flatland 4 1 17 East St. Marcoussin Jojoba Flatland 5 1 75 Centre St. Marcoussin Jojoba Flatland
select * from customeraddress2
id idclient street city county country 1 1 99 North St. Marcoussin Jojoba Flatland 2 2 88 South St. Marcoussin Jojoba Flatland 3 3 88 West St. Marcoussin Jojoba Flatland 4 1 66 East St. Marcoussin Jojoba Flatland 5 1 55 Centre St. Marcoussin Jojoba Flatland
私が探している対応する宛先表へのスクリプトの両方のソーステーブル内のデータのインポートをする方法である、customeraddressにidclient間のリンクを維持しながら、そして顧客のID。あなたが先データベース内のデータをステージングできた場合
あなたが失敗を自分で設定しているMAX(ID)+ 1を使用していつでも。ここには間違っていることがたくさんあります。投稿されたように、あなたの質問は完全に広すぎ、詳細が不十分です。 –
明確にするにはどうすればよいですか?小さなサンプルデータベース(ソースとターゲット)を提供すれば問題ありませんか? – pickarooney
http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –