首页 > 解决方案 > 存储在文本字段中的 SQL Server BULK IMPORT 数字(字节)值

问题描述

我正在尝试将数据从非常旧的 Informix DB 迁移到 SQL Server。我在 Informix 端使用 UNLOAD 将数据转储到文本文件中。然后我在 SQL Server 端使用 BULK IMPORT 来加载文件。

设计此数据库的人正在使用 CHAR(6) 字段在 Informix 上存储数字数据。您可以在 update_flag 列字段 6 (54-) 中看到该示例。如果您查看 Notepad++ 中的字段,它看起来像“54[SOH][SOH][SOH][EM]”

 99|8880327|056-41|802|STTB|54-| |0.0|0.0|10.0|10.0|10.0|10.0|30.0|20.0|50.0    
 98|8880327|056-41|802|ST|&| |0.0|0.0|0.0|0.0|0.0|0.0|0.0|0.0|0.0|0.0|0.0|10.0

当我尝试将其导入 SQL Server 时,出现错误:

第 301 行第 6 列 (update_flag) 的批量加载数据转换错误(指定代码页的类型不匹配或无效字符)。

有没有办法在批量导入期间将此 6 字节字段转换为其数值?例如,第一条记录“54”中的前 2 个字节(字节值 0011 0110 0011 0101)将转换为十进制 13,877

请记住,这个版本的 Informix 是 1990 年的,因此 CAST() 之类的很多东西都不可用。

标签: sql-serverdatabaseinformix

解决方案


推荐阅读