gpt4 book ai didi

sql-server - 批量加载数据转换错误 - 找不到答案

转载 作者:行者123 更新时间:2023-12-04 03:13:50 24 4
gpt4 key购买 nike

出于某种原因,我在尝试将 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
);

表架构 - 这是一个独立的表(进一步的计算和附加表是基于这个单一的表构建的,但是在批量插入时它是唯一的表)

最佳答案

您的数据很可能有误。也就是说,存在无法显式转换为 NUMERICDECIMAL 的字符或值。检查并修复它的一种方法是

  1. [Delta_SM_RR] numeric(10,5) 更改为 [Delta_SM_RR] nvarchar(256)
  2. 运行批量插入
  3. 找到您的错误行:select * from Example_Table where [Delta_SM_RR] like '%[^-.0-9]%'
  4. 在源头修复数据,或从 Example_Table 中删除 [Delta_SM_RR] like '%[^-.0-9]%'

最后的语句返回/删除除数字、句点或连字符以外的行。

对于日期列,您可以遵循上述相同的逻辑,将列更改为 VARCHAR,然后使用 ISDATE() 查找错误找到那些无法转换的。

关于sql-server - 批量加载数据转换错误 - 找不到答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42862533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com