You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用BCP向SQL Server导入整数数据时值异常求助

问题原因及解决办法

核心原因

你使用的格式文件里将字段类型指定为SQLINT,这是MSSQL的二进制4字节整数类型,但你的源数据是CSV格式的文本字符串数字。bcp会直接把文本的ASCII字节当作二进制INT解析,比如字符串"6"的ASCII码是54,所以插入后site_id变成54,完全不符合预期。

解决方法

有两种可行的修正方式:

方式1:修改格式文件,使用字符类型定义

把格式文件里的SQLINT替换成SQLCHAR,同时设置合适的字符长度(比如10,足够容纳你的整数长度),修改后的bcp.fmt内容如下:

14.0
3
1       SQLCHAR              0       10      ","    1     site_id                                      ""
2       SQLCHAR              0       10      ","    2     view_id                                    ""
3       SQLCHAR              0       10      "\n"   3     content_id                                   ""

修改后重新执行原bcp命令即可。

方式2:直接使用字符模式导入,无需格式文件

去掉-f bcp.fmt参数,加上-c(字符模式)、-t ","(指定字段分隔符)、-r "\n"(指定行分隔符),命令改为:

bcp test_load in /tmp/small_insert_test.csv -S <Server> -U <UID> -P <PWD> -d <DB> -c -t "," -r "\n"

这种方式bcp会自动处理文本字符串到INT字段的转换,更适合CSV文本导入场景。

验证

修改后重新导入,查询test_load表就能看到和源数据一致的数值了。

内容的提问来源于stack exchange,提问作者Josh Kraushaar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 21:25:08