我试图从CSV文件中添加大量数据到数据库中。
Employee表有一个列ID (PK)自动递增。
CREATE TABLE [dbo].[Employee](
[id] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NULL,
[Address] [varchar](50) NULL
) ON [PRIMARY]我正在使用以下查询:
BULK INSERT Employee FROM 'path\tempFile.csv '
WITH (FIRSTROW = 2,KEEPIDENTITY,FIELDTERMINATOR = ',' , ROWTERMINATOR = '\n');.CSV文件-
Name,Address
name1,addr test 1
name2,addr test 2但它会导致以下错误消息:
第2行第1(Id)列的大容量加载数据转换错误(指定代码页的类型错配或无效字符).
发布于 2012-06-01 13:24:02
不要直接将插入插入到实际表中。
我会一直
从CSV文件
dbo.Employee_Staging (没有IDENTITY列),插入到dbo.Employee(名称,地址),选择名称,地址从dbo.Employee
发布于 2012-09-12 20:22:15
将id列添加到csv文件中,并将其保留为空:
id,Name,Address
,name1,addr test 1
,name2,addr test 2从查询中删除KEEPIDENTITY关键字:
BULK INSERT Employee FROM 'path\tempFile.csv '
WITH (FIRSTROW = 2,FIELDTERMINATOR = ',' , ROWTERMINATOR = '\n');id标识字段将自动递增。
如果为csv中的id字段赋值,除非使用KEEPIDENTITY关键字,否则它们将被忽略,然后将使用它们而不是自动增量。
发布于 2014-04-25 13:51:06
我也有类似的问题,但我需要确保ID的顺序与源文件中的顺序一致。我的解决方案是对大容量插入使用视图:
保持表的原样并创建此视图(选择除ID列外的所有内容)
CREATE VIEW [dbo].[VW_Employee]
AS
SELECT [Name], [Address]
FROM [dbo].[Employee];然后,批量插入应该如下所示:
BULK INSERT [dbo].[VW_Employee] FROM 'path\tempFile.csv '
WITH (FIRSTROW = 2,FIELDTERMINATOR = ',' , ROWTERMINATOR = '\n');https://stackoverflow.com/questions/10851065
复制相似问题