使用 BIGINT 列将带有空白值的 CSV 插入 SQL table

Inserting CSV with blank value into SQL table with BIGINT column

我正在尝试将一些 CSV 文件插入 SQL 服务器 (2016) table。其中一个 CSV 文件包含空白值,例如:

ID, VALUE, DATE
235425, 34, '2018-05-08'
234567, , '2018-05-08'
233456, 67, '2018-05-08' 

我是 运行 的进程试图将此值插入到 BIGINT 列中,而空白值似乎正在中断进程,导致出现以下错误消息:

Error converting data type nvarchar to bigint

任何人都可以阐明 debug/resolve 这个问题的最佳步骤吗?

根据经验,您应该首先将所有数据按原样插入暂存 table。这有两个好处:

  1. 从文件导入 SQL 服务器时没有数据丢失
  2. 然后您可以使用比任何外部进程都快得多的 SQL 查询对暂存 tables 进行操作。

您还可以使用带有 TRY_PARSE 或 TRY_CONVERT 或 TRY_CAST 函数的查询来插入如下数据

INSERT INTO Tbl
SELECT ID,
Value= TRY_CAST(Value as bigint),
Date= TRY_CAST(Date as date)
FROM stagingTbl