2010-10-08 45 views
3

我插入值'$5.99'(或试图插入)到money字段。它不像美元符号

我实际上是从csv文件进行批量插入。在CSV文件中的一列中有money美元符号

可以请你帮我找出如何做到这一点与$标志批量插入到money场?

Msg 4864, Level 16, State 1, Line 1 
Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 1, column 2 (pricepaid). 

我该如何摆脱标志?

回答

5

基于这个问题,以及您之前的问题herehere,我建议您将批量插入到临时保存表中,在那里您可以将“money”字段定义为varchar。然后编写另一条SQL语句将数据从保存表移动到真实表。在这个SQL语句中,您可以跳过不需要的列,从您的“钱”字段中删除'$'并将其作为金钱数据类型等。

2

不,您不能将货币符号插入货币字段。

这实际上只是一个十进制(19,4),用一个友好的名字。

+0

那么解决方案是什么? – 2010-10-08 19:58:25

+0

是否可以在使用BULK INSERT进入数据库之前格式化数据? – 2010-10-08 19:59:58

+0

您是否需要将此设置为可重复的流程?如果没有,也许只是在MS Excel中事先操作CSV以删除货币符号? – 2010-10-08 20:01:53

2

你不能,Money只是一个数字类型,比小数点稍微灵活。存储的符号,你将不得不使用varchar

+0

在使用BULK INSERT进入数据库之前可以格式化数据吗? – 2010-10-08 20:00:21

+0

我会亲自使用Joe Stefanelli的建议 – Pharabus 2010-10-08 20:05:39

3

作为一种解决方法,您可以创建一个与您的目标相同架构的表,使用varchar列而不是金钱,并批量插入。然后更新导入的表格以删除'$'并将数据复制到原始目标。

0

其他人建议临时表。如果使用临时表来保存CSV文件中的原始数据,则应该能够从包含$字符的VarcharChar字段直接转换为Money(即,不需要删除它)。

这对SQL 2008中的我很有用。

+0

不知何故,这并不令我感到意外。我认为这是一个有效的答案,因为jenny以“SQL Server 2008”开头的其他问题。 – jwiscarson 2010-10-08 20:26:40

相关问题