2011-06-29 70 views
0

當我導入以下行從一個數據文件:bcp導入數據爲基數256?

DATAFILE1: 

1,2,3,4,5,6.789 
10,11,12,13,14,15.6789 

到SQL Server 2008 R2,該數據來自在好像是解釋數據作爲ASCII值基座256(即12337 =(48 * 256。 )+ 49,其中 '0'= 48, '1'= 49)

FIELD1 FIELD2 FIELD3 FIELD4 FIELD5 FIELD6  FIELD7 
49  50  51  52  53  0.00000000 NULL 
12337 12593 12849 13105 13361 0.00000000 NULL 

命令我使用

bcp TABLE1 in DATAFILE.csv -S SERVER1 -d DB1 -U sa -f bcp.fmt 

一切成功返回沒有錯誤,但是當我看在桌子上,一切都錯了。這裏的bcp.fmt文件(非XML)

10.0 
6 
1  SQLINT    0  0  "," 1  FIELD1     "" 
2  SQLSMALLINT   0  0  "," 2  FIELD2     "" 
3  SQLBIGINT   0  0  "," 3  FIELD3     "" 
4  SQLBIGINT   0  0  "," 4  FIELD4     "" 
5  SQLBIGINT   0  0  "," 5  FIELD5     "" 
6  SQLDECIMAL   0  0  "\n" 6  FIELD6     "" 

的DDL表:

CREATE TABLE [dbo].[TABLE1](
    [FIELD1] [int] NOT NULL, 
    [FIELD2] [smallint] NOT NULL, 
    [FIELD3] [bigint] NOT NULL, 
    [FIELD4] [bigint] NULL, 
    [FIELD5] [bigint] NULL, 
    [FIELD6] [decimal](18, 8) NOT NULL, 
    [FIELD7] [decimal](18, 8) NULL 
) 

回答

1

終於找到了答案在這裏: http://www.codeproject.com/Messages/3531341/bcp-and-int-ASCII-code-conversion-modified.aspx

的問題是在BCP。 fmt文件。數據類型應該被指定。引用其中一個迴應:「只需將該死的領域標記爲SQLCHAR,並讓db進行轉換並且一切順利。」

+0

來自[本站](http://www.acan.eu/books/sql_server/ch16.htm)的提示也非常方便「使用ASCII文件時,請將所有文件存儲類型設置爲char,而不管表的數據類型,這是使用BCP將ASCII數據加載到SQL Server的唯一方法。「 這與源文件的「文件存儲類型」有關。 –