BCP импортирует данные в виде базы 256? - PullRequest
0 голосов
/ 30 июня 2011

Когда я импортирую следующие строки из файла данных:

DATAFILE1:

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

в SQL Server 2008 R2, данные поступают так, как будто они интерпретируют данные как основную 256-значную величину ascii (т.е. 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 Ответ

1 голос
/ 19 июля 2011

Наконец нашел ответ здесь: http://www.codeproject.com/Messages/3531341/bcp-and-int-ASCII-code-conversion-modified.aspx

Проблема была в файле bcp.fmt.Типы данных должны быть указаны.Процитирую один из ответов: «Просто пометьте чертово поле как SQLCHAR, и пусть db сделает преобразование и все хорошо».

...