Sql server Freetds将数字作为整数写入数据库
我使用Sql server Freetds将数字作为整数写入数据库,sql-server,freetds,freebcp,Sql Server,Freetds,Freebcp,我使用freebcp将数据批量复制到SQL Server。它工作正常,但数值最终被截断为整数。数据库中的列是一个浮点,因此它可以处理带小数的值 命令 freebcp MyDatabase.MySchema.MyTable in /path/to/myfile.txt -c -S MyServer -U MyUser -P MyPassword MyTable有5列,第一列是2个整数,其他列是浮点 样本来自myfile.txt 19344 303634 -0.419398400743657
freebcp
将数据批量复制到SQL Server。它工作正常,但数值最终被截断为整数。数据库中的列是一个浮点
,因此它可以处理带小数的值
命令
freebcp MyDatabase.MySchema.MyTable in /path/to/myfile.txt -c -S MyServer -U MyUser -P MyPassword
MyTable有5列,第一列是2个整数,其他列是浮点
样本来自myfile.txt
19344 303634 -0.419398400743657 -1.38936409312037 0.550567291633061
19345 303634 -1.59787440264054 -2.05068741446749 -1.14506139081359
存储为
19344 303634 0 -1 1
19345 303634 -2 -2 -1
如何解决这个问题
注意:我在Ubuntu下使用的是freebcp
。在Windows下使用bcp
时,浮动列可以正确导出,同时使用几乎相同的语法(只需将freebcp
替换为bcp
并使用插入式连接即可)
提问者最初用十进制表示三列的数据类型
位置为数字
。提问者编辑问题,更改数据类型
以浮动
,响应此答案
NUMERIC
在功能上等同于DECIMAL
是否为SQL表中的数值列定义了精度和刻度?未定义时,默认精度为18,比例为0。因此,如果未定义它们,则小数点右侧将有0位
如果无法预测所需的小数位数(小数位数),则FLOAT
数据类型更合适
否则,您需要设置数值的精度和比例
提问者最初用十进制表示三列的数据类型
位置为数字
。提问者编辑问题,更改数据类型
以浮动
,响应此答案
NUMERIC
在功能上等同于DECIMAL
是否为SQL表中的数值列定义了精度和刻度?未定义时,默认精度为18,比例为0。因此,如果未定义它们,则小数点右侧将有0位
如果无法预测所需的小数位数(小数位数),则FLOAT
数据类型更合适
否则,您需要设置NUMERIC
的精度和比例。非整数字段的数据类型为FLOAT
。我已经更新了我的问题。非整数字段的数据类型是FLOAT
。我已经更新了我的问题。
bcp MyDatabase.MySchema.MyTable in /path/to/myfile.txt -c -S MyServer -T