SQL Server 2012 从 CSV 批量插入到临时表

标签 sql sql-server bulkinsert temp-tables

正如标题所说,我正在尝试将 CSV 插入到临时表中。不幸的是,我遇到了错误。

这是查询:

USE DATABASE5000

CREATE TABLE #tempTable1
(
    ID INT,
    CD VARCHAR(50), 
    ESD DATETIME,
    EED DATETIME, 
    MiscDate DATETIME, 
    SQ SMALLINT
) 

BULK INSERT #tempTable1
FROM 'C:\Dir\Folder\BestFile.csv';

这是我得到的错误:

Msg 4832, Level 16, State 1, Line 1
Bulk load: An unexpected end of file was encountered in the data file.

Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "BULK" for linked server "(null)" reported an error. The provider did not give any information about the error.

Msg 7330, Level 16, State 2, Line 1
Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".



有任何想法吗?谢谢你们。

最佳答案

您没有指定任何 FIELDTERMINATOR 。默认值实际上是 tab 。请引用 BULK INSERT 文档。

BULK INSERT #tempTable1
FROM 'C:\Dir\Folder\BestFile.csv'
WITH
(
    FIELDTERMINATOR = ','           -- add this
);

根据文档,有一个 FORMAT = CSV
WITH (FORMAT = 'CSV')

你可以试试。我做了一个快速测试,有一些限制似乎不支持带双引号的字符串

关于SQL Server 2012 从 CSV 批量插入到临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52730644/

相关文章:

sql - 在 SQL 表中的文本字符串中查找换行符?

sql - 在 SQL 中将多个值传递给函数的参数

php - laravel 5.6批量插入json数据

javascript - 将(对象的)数组插入 mysql 数据库

mysql - 即使有大量可用连接,响应也非常慢

sql - 空值处理

mysql - SQL,难以获取数据查询

sql - oracle中 “tab”表和all_tables之间的区别

c# - 如何解决警告 "Referenced assembly targets a different processor than the application"

c# - BulkInsert - 空间 'CSSpace' 没有关联的集合