【发布时间】:2017-08-09 07:22:06
【问题描述】:
由于某种原因,我在尝试将 CSV 文件批量插入 SQL Express 时不断收到以下错误:
Bulk load data conversion error (type mismatch or invalid character for the
specified codepage) for row 2, column 75 (Delta_SM_RR).
Msg 4864, Level 16, State 1, Line 89
Bulk load data conversion error (type mismatch or invalid character for the
specified codepage) for row 3, column 75 (Delta_SM_RR).
Msg 4864, Level 16, State 1, Line 89
Bulk load data conversion error (type mismatch or invalid character for the
specified codepage) for row 4, column 75 (Delta_SM_RR).
... etc.
我一直试图将此列插入为十进制和数字,并不断收到相同的错误(如果我取出此列,后续列会出现相同的错误)。
数据示例见下图,该栏内所有数据点均包含小数,且均在小数点后第三位四舍五入:
Delta_SM_RR
168.64
146.17
95.07
79.85
60.52
61.03
-4.11
-59.57
1563.09
354.36
114.78
253.46
451.5
任何形式的帮助或建议都将不胜感激,因为似乎 SO 的许多人都遇到了这个问题。此外,如果有人知道另一种将 CSV 加载到 SSMS 中的自动方法,那也会有很大帮助。
编辑:
Create Table Example_Table
(
[Col_1] varchar(255),
[Col_2] numeric(10,5),
[Col_3] numeric(10,5),
[Col_4] numeric(10,5),
[Col_5] date,
[Delta_SM_RR] numeric(10,5),
)
GO
BULK INSERT
Example_Table
FROM 'C:\pathway\file.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
FIRSTROW = 2
);
表架构 - 这是一个独立的表(进一步的计算和额外的表是基于这个单一的表构建的,但是在批量插入时它是唯一的表)
【问题讨论】:
-
表架构是什么样的? “destination”列的数据类型是什么?
-
包括您的表架构、您正在使用的批量插入命令、源文件的编码和格式文件(如果您正在使用的话)。另外,你用的是哪个版本的sql server?
-
感谢两位的回答。我在上面进行了编辑以回答您的两个问题。另外,我正在使用 SQL Express 2012
-
您是否尝试过使用格式文件? (FMT 或 XML)。或者尝试使用 0x0a 添加行终止符
-
我也会检查您数据中的科学记数法
标签: sql-server tsql csv ssms bulk-load