0

次のコードがあります。

set identity_insert CapModel.LedgerAmountByECMAccountByRptLOB ON

INSERT INTO [AnalyticsV2P7].[CapModel].[LedgerAmountByECMAccountByRptLOB] (AccountintDate,Ledger,Period,RptLOB,ECMAccount,Amount,AmountId)
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=E:\Database\Data\AnalyticsV2P7\LedgerAmountByECMAccountByRptLOB.xlsx', 'SELECT * FROM [Sheet1$]');

set identity_insert CapModel.LedgerAmountByECMAccountByRptLOB Off

whereAmountIDは、NULL 値が許可されていない ID 列です。私のExcelファイルでは、その列は空白です(ヘッダー以外)

次のエラー メッセージが表示されます。

値 NULL を列 'AmountId'、テーブル 'AnalyticsV2P7.CapModel.LedgerAmountByECMAccountByRptLOB' に挿入できません。列はヌルを許可しません。INSERT は失敗します。

そのように設定したため、NULL 値が許可されていないことは理解していますが、ID 列を埋めることになっていないため、NULL 値はありませんか?

助けていただければ幸いです。

ありがとう

4

1 に答える 1

1

SET IDENTITY_INSERTは、ID 列の値を提供していることを意味します。これは、列リストにあり、SELECT ステートメントから返されているためです。

SET IDENTITY_INSERT 行を削除し、列リストから AmountId を削除します。また、AmountId を提供しないように、Excel シートから返される列を列挙する必要があります。

于 2012-10-05T20:22:48.923 に答える