web-dev-qa-db-ja.com

ソースと宛先の両方にデータとID列がある場合のSQLインポートデータ

[データのインポートとエクスポート]オプションを使用して、あるデータベースから別のデータベースにデータをインポートしています。どちらのデータベースもテーブルの構造が似ています。すべてのテーブルには、ID要素である主キー(自動インクリメント1)があります。ソーステーブルと宛先テーブルの両方に行があります。

データをインポートすると、Failure inserting into the read-only columnのようなエラーが発生します

enable identity insertチェックボックスを有効にして、データをインポートしようとしました。この場合、以下に示すようにエラーが発生しました

Copying to [dbo].[Misc_Data] (Error)
Messages
Error 0xc0202009: Data Flow Task 1: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 10.0"  Hresult: 0x80004005  Description: "The statement has been terminated.".
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 10.0"  Hresult: 0x80004005  Description: "Violation of PRIMARY KEY constraint 'PK_Misc_Data'. Cannot insert duplicate key in object 'dbo.Misc_Data'. The duplicate key value is (1).".
(SQL Server Import and Export Wizard)

Error 0xc0209029: Data Flow Task 1: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR.  The "input "Destination Input" (50)" failed because error code 0xC020907B occurred, and the error row disposition on "input "Destination Input" (50)" specifies failure on error. An error occurred on the specified object of the specified component.  There may be error messages posted before this with more information about the failure.
(SQL Server Import and Export Wizard)

Error 0xc0047022: Data Flow Task 1: SSIS Error Code DTS_E_PROCESSINPUTFAILED.  The ProcessInput method on component "Destination - Misc_Data" (37) failed with error code 0xC0209029 while processing input "Destination Input" (50). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running.  There may be error messages posted before this with more information about the failure.
(SQL Server Import and Export Wizard)

SQLでID挿入を有効にすると、ID列のソーステーブルと同じ値の行を挿入しようとするとエラーが発生します。

この場合、どうすればデータをインポートできますか?ソースと宛先の両方にデータがあり、ID列が主キーとして設定されている場合。

[〜#〜] edit [〜#〜] 1つの列(ID列)以外のテーブルをインポートするために使用したクエリを以下に示します

SELECT [Name]
  ,[Status]
  ,[Last_Checked]
  ,[RecievedDate]
  ,[RecptNo]
  ,[Date2]
  ,[processedDate]
  ,[ind_num]
  ,[AcNo]
  ,[returnType]
  ,[sign]
  ,[oldStatus]
  ,[Acno_old]
  ,[Remarks]
  ,[FileName]
  ,[Status_checked]
  ,[Date_Time]
  ,[By]

FROM [dbname]。[dbo]。[mytable]

この場合、私は次のようなエラーが発生します

- Pre-execute (Error)
Messages
Error 0xc0202004: Data Flow Task 1: The number of columns is incorrect.

(SQL Serverインポートおよびエクスポートウィザード)

Error 0xc0202025: Data Flow Task 1: Cannot create an OLE DB accessor. Verify that the column metadata is valid.
 (SQL Server Import and Export Wizard)

Error 0xc004701a: Data Flow Task 1: component "Destination - Query" (73) failed the pre-execute phase and returned error code 0xC0202025.
(SQL Server Import and Export Wizard)

両方のテーブルの構造とデータ型は同じです。それでもエラーが発生します。

1
IT researcher

テーブル全体を使用しないでください。代わりに、クエリを書き込むオプションを選択します。

BasicInstructions

次に、そのID列を使用しないselectステートメントを記述します。 SoBasic

または、列をマップするときに「宛先テーブルの行を削除」をクリックすると、データをロードする前にターゲットテーブルが切り捨てられます。ソースシステムからデータを削除する機会があり、それが宛先に残っている必要がある場合、この手順は適切ではありません。

enter image description here

パッケージは次のようになります

enter image description here

13
Zane