我有以下代码:
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
其中AmountID
是一个标识列,其中不允许使用NULL值。在我的Excel文件中,该列为空(除了标题)
我收到以下错误消息:
无法将值NULL插入列'AmountId',表'AnalyticsV2P7.CapModel.LedgerAmountByECMAccountByRptLOB';专栏 不允许空值。 INSERT失败。
我知道不允许使用NULL值,因为我以这种方式设置它但不应该填充标识列,因此没有NULL值吗?
我将不胜感激任何帮助!
由于
答案 0 :(得分:1)
SET IDENTITY_INSERT表示您正在为标识列提供值 - 您可以在列列表中并从SELECT语句返回。
删除SET IDENTITY_INSERT行,并从列列表中删除AmountId。您还需要枚举从Excel工作表返回的列,以便不提供AmountId。