使用Bulk Insert将文本文件导入SQL Server

5

这是我的 SQL 语句

BULK INSERT dbo.Account FROM 'G:\Import\Account3.txt'
WITH
(
    FIELDTERMINATOR = '" | "'
)
GO

当我运行SQL时,出现了以下错误:

Msg 4866,Level 16,State 1,Line 1
批量加载失败。

数据文件中第1行第1列的列过长。请确认字段终止符和行终止符是否正确指定。

Msg 7399,Level 16,State 1,Line 1
联接服务器“(null)”的OLE DB提供程序“BULK”报告了一个错误。提供程序没有提供关于错误的任何信息。

Msg 7330,Level 16,State 2,Line 1
无法从OLE DB提供程序“BULK”获取联接服务器“(null)”的行。

请帮忙解决。我已经尝试了很多方法,但仍然出现相同的错误。


1
请提供Account3.txt文件的一些示例行。 - Nick.McDermaid
2个回答

4

从你的SQL示例中可以看出,你缺少了一个ROWTERMINATOR语句,它指定了如何区分行与行之间的差异。

你的查询将变成类似以下的形式:

BULK INSERT dbo.Account FROM 'G:\Import\Account3.txt'
WITH
(
FIELDTERMINATOR = '" | "',
ROWTERMINATOR = '\r\n'
)
GO

-1

试试这个

BULK
INSERT dbo.Account 
FROM 'G:\Import\Account3.txt'
WITH
(
FIELDTERMINATOR = '|',
ROWTERMINATOR = '\n'
)
GO

当我运行这个脚本时,我收到了以下错误信息:Msg 102,Level 15,State 1,Line 1 Incorrect syntax near 'GO'。希望有人能够帮助我。这是我第一次做这个。 - riza
我尝试使用另一个脚本,但仍然出现相同的错误。这是我的新脚本:USE Reporting_DB_Test; GO BULK INSERT dbo.Account FROM 'G:\Import\Account.txt' WITH ( CHECK_CONSTRAINTS, FIELDTERMINATOR = '" | "', KEEPNULLS , CODEPAGE='RAW', KEEPIDENTITY ); GO请帮帮我,我真的很需要帮助。 - riza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接