2016-10-12 162 views
0

私は、BCPを使用してデータファイルをSQL Serverにロードしようとしていましたが、動作させることはできません。BCPを使用してデータファイルをSQL Serverにインポートできません。どうすればこの作品を作れますか?

これは私が実行しているコマンドーです:bcp EDW.stg.STG_ACCOUNT in .\dm_account000 -T -S 111.1.1.111,1111 -t "," -cと私が得たすべては、このエラーだった:

Starting copy... 
SQLState = 22005, NativeError = 0 
Error = [Microsoft][ODBC Driver 11 for SQL Server]Invalid character value for cast specification 

私はすでに多くのウェブサイト上で言及したが、何も私の最後と間違っているように思われていない日付の変換の問題をチェックしますデータファイルの3つのフィールド。ここに私のデータファイルがあるとフッターで、あなたはエンコーディングを見ることができる、など

enter image description here

そして、ここに私のターゲット表のスペックです:

CREATE TABLE [stg].[STG_ACCOUNT](
    [CD_ACCOUNT] [varchar](20) NULL, 
    [CD_CNPJ] [varchar](30) NULL, 
    [NA_ACCOUNT] [varchar](255) NULL, 
    [NA_OWNER] [varchar](100) NULL, 
    [NA_OWNER_SHARED] [varchar](100) NULL, 
    [NA_OWNER_GROWTH_TEAM] [varchar](100) NULL, 
    [DS_INDUSTRY] [varchar](50) NULL, 
    [DS_ACCOUNT_STATUS] [varchar](30) NULL, 
    [NA_ACCOUNT_CITY] [varchar](50) NULL, 
    [AB_ACCOUNT_STATE] [char](30) NULL, 
    [DS_REGION] [varchar](50) NULL, 
    [IN_CLASSIFICATION_PARTNER] [int] NULL, 
    [IN_CLASSIFICATION_PARTNER_N] [int] NULL, 
    [DS_COMPETITOR_PARTNER] [char](3) NULL, 
    [DS_HEADQUARTER_BRANCH] [varchar](30) NULL, 
    [DS_CHAIN_FRANCHISE] [varchar](30) NULL, 
    [DS_ECONOMIC_GROUP] [varchar](255) NULL, 
    [DS_WATCH_LIST] [varchar](50) NULL, 
    [IN_STRATEGIC] [int] NULL, 
    [DT_CREATED] [date] NULL, 
    [DT_LAST_ACTIVITY] [date] NULL, 
    [DT_LAST_MODIFIED] [date] NULL, 
) 

誰もがこの問題で私を助けることができます?他に何ができるかわからない。前もって感謝します。

+1

エラーMSGは少し誤解を招くかもしれないが、多分問題は-c使って、「\ rを\ n」は(CRLF)にデフォルトのロー・ターミネータを設定しているということですあなたのファイルでは '\ n'(LF)です。 -r "\ r \ n"を明示的に指定して行区切りを無効にしてみてください。 – Jayvee

+0

コンマ区切り文字と 'LF'改行を持つことを意味する' -t、-r \ n'を指定する必要があります。 [フィールドと行ターミネータの指定(SQL Server)](https://msdn.microsoft.com/en-us/library/ms191485.aspx) –

+0

@Jayvee答えをありがとう。データファイルでEOLを 'DOS/Windows'に変更したところ、それはうまくいったが、奇妙なことがあった。私のデータファイルは125.616行ですが、インポートされるのは47.169だけです。エラー行をエラーファイルにリダイレクトしましたが、10行しか表示されません(手動でインポートすることはできますが、問題はありません)。エラーが発生した場合、bcpはデータブロックをスキップしているようです。あなたはこの行動を見たことがありますか? –

答えて

0

-C ACPを追加してコードページを指定してみてください。 MSDNから

...

-C { ACP | OEM | RAW | code_page } Specifies the code page of the data in the data file. code_page is relevant only if the data contains char, varchar, or text columns with character values greater than 127 or less than 32. System_CAPS_ICON_note.jpg Note

We recommend specifying a collation name for each column in a format file, except when you want the 65001 option to have priority over the collation/code page specification. Code page value Description ACP ANSI/Microsoft Windows (ISO 1252). OEM Default code page used by the client. This is the default code page used if -C is not specified. RAW No conversion from one code page to another occurs. This is the fastest option because no conversion occurs. code_page Specific code page number; for example, 850.

Versions prior to version 13 (SQL Server 2016) do not support code page 65001 (UTF-8 encoding). Versions beginning with 13 can import UTF-8 encoding to earlier versions of SQL Server.

関連する問題