无法将值NULL插入列';列不允许空值。 INSERT失败。 (T-SQL)

时间:2012-10-05 20:20:17

标签: sql-server

我有以下代码:

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值吗?

我将不胜感激任何帮助!

由于

1 个答案:

答案 0 :(得分:1)

SET IDENTITY_INSERT表示您正在为标识列提供值 - 您可以在列列表中并从SELECT语句返回。

删除SET IDENTITY_INSERT行,并从列列表中删除AmountId。您还需要枚举从Excel工作表返回的列,以便不提供AmountId。