0

一括挿入コマンドを使用してインポートするタブ区切りファイルがあります。次のようなフォーマットファイルがあります。

8.0
9
1       SQLCHAR       0       50      "\t"                          1     Field1             "SQL_Latin1_General_CP1_CI_AS"
2       SQLCHAR       0       50      "\t"                          2     Field2             "SQL_Latin1_General_CP1_CI_AS"
3       SQLCHAR       0       50      "\t"                          3     Field3             "SQL_Latin1_General_CP1_CI_AS"
4       SQLCHAR       0       50      "\t"                          4     Field4             "SQL_Latin1_General_CP1_CI_AS"
5       SQLCHAR       0       50      "\t"                          5     Field5             "SQL_Latin1_General_CP1_CI_AS"
6       SQLCHAR       0       50      "\t"                          6     Field6             "SQL_Latin1_General_CP1_CI_AS"
7       SQLCHAR       0       50      "\t"                          7     Field7             "SQL_Latin1_General_CP1_CI_AS"
8       SQLCHAR       0       50      "\t"                          8     Field8             "SQL_Latin1_General_CP1_CI_AS"
9       SQLCHAR       0       0       "\r\n"                        9     Field9              "SQL_Latin1_General_CP1_CI_AS"

ANSI ファイルでは問題なく動作しますが、UCS-2 リトル エンディアン エンコーディングとしてファイルを受信して​​います。

これを機能させるための私の試みは、フォーマットファイルに次の修正を使用することです。これによりエラーが停止しますが、すべての列が空の適切な数の行が得られます。可能であれば、ファイルの変換を避けたいと思います。

8.0
9
1       SQLCHAR       0       50      "\t\0"                          1     Field1             "SQL_Latin1_General_CP1_CI_AS"
2       SQLCHAR       0       50      "\t\0"                          2     Field2             "SQL_Latin1_General_CP1_CI_AS"
3       SQLCHAR       0       50      "\t\0"                          3     Field3             "SQL_Latin1_General_CP1_CI_AS"
4       SQLCHAR       0       50      "\t\0"                          4     Field4             "SQL_Latin1_General_CP1_CI_AS"
5       SQLCHAR       0       50      "\t\0"                          5     Field5             "SQL_Latin1_General_CP1_CI_AS"
6       SQLCHAR       0       50      "\t\0"                          6     Field6             "SQL_Latin1_General_CP1_CI_AS"
7       SQLCHAR       0       50      "\t\0"                          7     Field7             "SQL_Latin1_General_CP1_CI_AS"
8       SQLCHAR       0       50      "\t\0"                          8     Field8             "SQL_Latin1_General_CP1_CI_AS"
9       SQLCHAR       0       0       "\r\0\n\0"                      9     Field9               "SQL_Latin1_General_CP1_CI_AS"
4

3 に答える 3

1

あなたの質問は、別の同様の質問への回答を得るのに役立ちました ありがとう

「\t\0」はゴールド!!! (愚かな UNICODE :( )

(私はすでにSQLNCHAR SQLNVARCHAR PARTを持っていました:))

于 2016-07-07T16:11:57.893 に答える
0

あなたのBULK INSERT声明はどのように見えますか?次を追加する必要がある場合がありますDATAFILETYPE

 BULK INSERT {TableName}
 FROM '{FilePath}'
 WITH (DATAFILETYPE = 'widechar', FORMATFILE = '{FormatFilePath}')
于 2013-04-02T16:20:41.870 に答える