Sql server 2008 大容量插入在SQL Server 2008中不起作用

Sql server 2008 大容量插入在SQL Server 2008中不起作用,sql-server-2008,csv,bulkinsert,Sql Server 2008,Csv,Bulkinsert,以下是将CSV文件大容量加载到SQL Server 2008中的SQL语句,但返回: 0 row(s) affected. 代码: CSV文件如下所示(忽略顶行) 大容量插入不会从数据中删除引号,您需要更改要导入的文件或导入到表中,其中每列都是字符字段,并在查询中去掉引号并转换数据类型。我刚刚找到以下MSDN文章: 它说: SQL Server批量导入操作不支持逗号分隔值(CSV)文件 然后继续列举一些它将在哪些情况下工作的例子 这个问题有点老了,但当我搜索问题时它出现了,所以我想我会提供我

以下是将CSV文件大容量加载到SQL Server 2008中的SQL语句,但返回:

0 row(s) affected.
代码:

CSV文件如下所示(忽略顶行)


大容量插入不会从数据中删除引号,您需要更改要导入的文件或导入到表中,其中每列都是字符字段,并在查询中去掉引号并转换数据类型。我刚刚找到以下MSDN文章:

它说:

SQL Server批量导入操作不支持逗号分隔值(CSV)文件


然后继续列举一些它将在哪些情况下工作的例子

这个问题有点老了,但当我搜索问题时它出现了,所以我想我会提供我的解决方案

在我的例子中,这是一个简单的错误,没有插入到正确的表中,所以一定要检查要插入的表。在试图弄清楚到底发生了什么的过程中,我发现您可以让批量插入过程创建一个错误文件,希望它能引导您朝着正确的方向前进。为此,可以使用类似于
ERRORFILE='E:\Error.txt'
的方法。这会将您收到的错误输出到一个名为error.txt的文件中。我在下面提供了一个完整的示例:

BEGIN TRANSACTION
BEGIN TRY
BULK INSERT [Table Name]
FROM 'E:\FileName.csv'
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n', ERRORFILE ='E:\Error.txt')
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
END CATCH

您会注意到,我已将批量插入过程包装到事务中。这样,如果在大容量插入过程中出现任何问题,它将回滚所有内容,并且我不会得到部分数据导入。

那么您要插入的
EnergyData
的表结构是什么?
24544,"1970-01-01 10:00:00","8056060 kWh"
24544,"2012-12-04 00:15:00",0.176
24544,"2012-12-04 00:30:00",0.163
24544,"2012-12-04 00:45:00",0.016
BEGIN TRANSACTION
BEGIN TRY
BULK INSERT [Table Name]
FROM 'E:\FileName.csv'
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n', ERRORFILE ='E:\Error.txt')
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
END CATCH