2010-10-08 48 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

相關問題