如何从CSV文件导入GUID? guid已经采用0x
格式,例如0x10A82EE168F7D211BB8D11A0C9D56DCE
。
当我这样做时:
if object_id ('Zones' , 'U' ) is not null
drop table Zones;
go
create table Zones
(
ID binary(16) not null
, Country varchar (100) not null
)
bulk
insert Zones
from '\\...\zones.csv'
with
(
fieldterminator = ','
, rowterminator = '\n'
)
go
我收到错误:
Msg 4863,Level 16,State 1,Line 12
第1行第1列(ID)的批量加载数据转换错误(截断)。
答案 0 :(得分:1)
只有当我从CSV文件中的十六进制表示中删除0x
前缀时,您的代码才适用于我。 manual page似乎没有提供任何方法使BULK INSERT语句识别前缀。
作为解决方法,我建议先将GUID导入char(34)
列,然后再将其转换为CONVERT(binary(16), CharID, 1)
。
根据Zones
是仅作为临时表还是导入数据的最终目标,您可以更改其ID
列的类型,也可以使用临时存储直接批量处理将数据插入并随后通过转换插入Zones
。
答案 1 :(得分:0)
要在表中存储GUID,请使用UNIQUEIDENTIFIER数据类型