在“FORMAT”附近批量插入不正确的语法

Bulk Insert Incorrect Syntax Near 'FORMAT'

提问人:azenk 提问时间:4/12/2023 最后编辑:Thom Aazenk 更新时间:4/12/2023 访问量:299

问:

我正在尝试将文件导入 SQL Server 中的表。这似乎是一个非常简单的过程,但是,我在运行查询时出现错误:.CSV

“FORMAT”附近的语法不正确

查询如下:

--import file
BULK INSERT dbo.ADDRESSSCHEDULE_Backup
FROM 'C:\Users\azenk\Desktop\SQL\Exports\AddressSchedule.csv'
WITH
(
    FORMAT = 'CSV',
    FIRSTROW = 2
)

我尝试进行批量插入。在运行查询之前,我没有收到任何警告,因此我希望将 CSV 中的行导入到指定的表中。

sql-server 语法错误 sql-server-2016 bulkinsert

评论

4赞 Thom A 4/12/2023
我假设您使用的是旧版本的 SQL Server(您没有在此处标记您的版本,所以我只能猜测)。如果你查看文档,你会看到它只是在 2017+ 年。该语法在 SQL Server 2017+ 中有效。
0赞 azenk 4/12/2023
啊,是的。不好意思。我应该包括它。我正在运行 MS SQL Server 2016。是否可以在更改语法的情况下进行此批量插入?
2赞 Thom A 4/12/2023
删除该参数并定义 .但是,如果您使用引号标识的值,则不会获得预期的结果。在这种情况下,您需要使用其他内容或将 CSV 文件更改为不被引用标识,并使用数据中未显示的分隔符。FORMATFIELDTERMINATOR
2赞 Dai 4/12/2023
@azenk 不是真的,因为在 2017 年之前,SQL Server 从不支持 RFC 样式的 CSV 文件,批量插入文件是一种特殊的(二进制?)格式,(可笑地)无法转义某些字符序列,因此无论如何都无法使用,除非您正在与一些传统的大铁 IBM 系统进行互操作,并且实际上按预期使用 ASCII 数据分隔符我猜......
0赞 Stu 4/12/2023
您可以查看使用和驱动程序;结合架构.ini文件,您可以对文件,解析器,文本限定符,字符编码等进行合理的控制。OpenRowsetMicrosoft.ACE.OLEDB.16.0

答: 暂无答案