从CSV文件导入GUID

时间:2014-07-01 19:00:24

标签: sql-server tsql

如何从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)的批量加载数据转换错误(截断)。

2 个答案:

答案 0 :(得分:1)

只有当我从CSV文件中的十六进制表示中删除0x前缀时,您的代码才适用于我。 manual page似乎没有提供任何方法使BULK INSERT语句识别前缀。

作为解决方法,我建议先将GUID导入char(34)列,然后再将其转换为CONVERT(binary(16), CharID, 1)

根据Zones是仅作为临时表还是导入数据的最终目标,您可以更改其ID列的类型,也可以使用临时存储直接批量处理将数据插入并随后通过转换插入Zones

答案 1 :(得分:0)

要在表中存储GUID,请使用UNIQUEIDENTIFIER数据类型