【发布时间】:2012-01-09 20:07:21
【问题描述】:
我有一个非常大的 csv 文件,其中包含约 500 列、约 350k 行,我正在尝试将其导入现有的 SQL Server 表中。
我试过BULK INSERT,我得到了-Query executed successfully, 0 rows affected。有趣的是,BULK INSERT 在几秒钟内就完成了类似的操作,但 csv 文件要小得多,不到 50 列,约 77k 行。
我也试过bcp,我得到了-Unexpected EOF encountered in BCP data-file. BCP copy in failed。
任务很简单 - 应该不难达到纯粹的挫败感。有什么想法或建议吗?您已成功用于完成批量导入操作或类似操作的任何其他工具、实用程序?谢谢。
-- 批量插入
USE myDb
BULK INSERT myTable
FROM 'C:\Users\myFile.csv'
WITH
(
FIRSTROW = 2,
-- DATAFILETYPE = 'char',
-- MAXERRORS = 100,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
);
--bcp
bcp myDb.dbo.myTable in 'C:\Users\myFile.csv' -T -t, -c
更新
我现在改变了方向。我决定在 SQL Server 之外加入 csv 文件,这是我开始的目标,这样我现在不必将数据上传到表中。但是,尝试从 csv 文件上传(BULK INSERT 或“bcp”)仅 1 条记录(约 490 列)会很有趣,否则会失败,看看它是否有效。
【问题讨论】:
-
您需要提供更多信息。你正在为
BULK INSERT或bcp运行什么命令? -
可能是文件本身损坏/不正确。
-
@JNK,
USE myDb BULK INSERT myTable FROM 'C:\Users\myFile.csv' WITH ( FIRSTROW = 2, -- DATAFILETYPE = 'char', -- MAXERRORS = 100, FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' ); -
@MickyWalia - 用代码标签把它放在你的问题中,这样它就可以阅读了。
-
@JNK,我正在编辑它 - 误按 Enter。
标签: sql sql-server csv bulkinsert bcp