gpt4 book ai didi

sql-server - 使用区域分隔符在 SQL Server 中批量插入

转载 作者:行者123 更新时间:2023-12-03 20:20:25 25 4
gpt4 key购买 nike

我想批量插入数据,其中小数点分隔符是区域设置中的逗号。
数据如下:

RegionName  Value_1 Value_2 Value_3
Region 1 27,48 66,41 32,82
Region 2 38,93 45,80 61,83
Region 3 38,17 58,02 35,11
Region 4 34,35 16,03 29,01
Region 5 67,94 58,02 17,56

我使用此脚本进行批量插入:
create table RegVaues (
RegionName varchar(30)
,Value_1 float
,Value_2 float
,Value_3 float
)
go

bulk insert RegVaues
from N'A:\TestValues.txt'
with
(
DATAFILETYPE = 'widechar'
,fieldterminator = '\t'
,rowterminator = '\n'
,firstrow = 2
,keepnulls
)
go

完成一个脚本后,我收到一个错误:

sg 4864, Level 16, State 1, Line 2 Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 2, column 2 (Value_1).



当我尝试用点作为分隔符时 - 一切正常。我试图插入不同类型(浮点数、十进制数、数字)的数据。在工具-> 选项-> 国际设置中的 SSMS 中,语言设置为“与 Microsoft Windows 中相同”。数据库排序规则是 Ukrainian_CI_AS。但是仍然无法插入带有逗号分隔符的数据。我做错了什么?

最佳答案

好吧,错误是不言自明的,其中带逗号的值不是浮点值,当您要插入像 27,48 这样的值时, 66,41转换为浮点列,它尝试将它们的值转换为浮点数,但失败,因此出现错误消息。

一个简单的解决方案是首先使用列数据类型字符 (VarChar) 将数据插入到一个保留/暂存表中,然后用小数点替换逗号,然后使用它们的值插入到最终目标表中。

还请注意, float 是一种近似数据类型,应该仅用于近似值,例如(地球质量和行星之间的距离等),精确值使用 DECIMALNUMERIC数据类型。

关于sql-server - 使用区域分隔符在 SQL Server 中批量插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30960399/

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