を失敗し、このエラーメッセージました:SQL Serverの:BULK INSERTが、私はprocStockで一括挿入を使用IID_IColumnsInfo
メッセージ4866、レベル16、状態8、行2
一括読み込みに失敗しました。行1、列1のデータファイルで列が長すぎます。フィールドターミネータと行ターミネータが正しく指定されていることを確認してください。メッセージ7301、レベル16、状態2、行2
は、OLE DBプロバイダリンクサーバー "BULK" "(ヌル)" から必要なインターフェース( "IID_IColumnsInfo")を取得できません。
私はStackで投稿を探し、ROWTERMINATOR = '0x0a'を使用するための解決策のアドバイスを見つけましたが、私はまだ同じエラーがあります。
SET @sir_de_executat = '
BULK INSERT #test
FROM ''d:\scripts\test.csv''
WITH (
FIRSTROW=2
, FORMATFILE=''d:\scripts\aaa2.fmt''
, FIELDTERMINATOR = '';''
, ROWTERMINATOR = ''0x0a''
)'
ありがとうございました。ここで
ここでは、CSVサンプル
BPARTNER;ME_TITLE_0208;BP_LSTNAME_0209;BP_FSTNAME_0210;STR_SUPPL1_0211;STR_SUPPL2_0212;HOUSE_NUM1_0213;HOUSE_NUM2_0214;STREET60_0215;STR_SUPPL4_0216;POSTALCODE_0217;CITY_1_0218;TEL_NUMBER_0219;FAX_NUMBER_0220;ZCHASSNR;ZFAHRZEUG__ZBRAND;ZFAHRZEUG__ZMODELKEY;ZFAHRZEUG__ZFISCHP;ZFAHRZEUG__ZMOTRVAR;ZFAHRZEUG__ZZULASSG;ZCREGDAT;/BIC/ZDDEALER;/BIC/Z_REGRNO_0124;ZFAHRZEUG__ZMOTR_KB4;ZFAHRZEUG__ZMODJAHR
6016562635;0002;FOO;BAR;;;823;;RUE DE LA SOUTE;;60400;CUTS;;;AZEZZZ8U0HR067422;AU;8UGBGY;0008;D;20170803;20170803;FRAA01612;EP-803-RP;DFTA;2017
あるFMT形式のファイルが
ある10.0
25
1 SQLCHAR 0 20 "\t" 1 bpartner SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 30 "\t" 2 title SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 256 "\t" 3 last_name SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 256 "\t" 4 first_name SQL_Latin1_General_CP1_CI_AS
5 SQLCHAR 0 256 "\t" 5 street2 SQL_Latin1_General_CP1_CI_AS
6 SQLCHAR 0 256 "\t" 6 street3 SQL_Latin1_General_CP1_CI_AS
7 SQLCHAR 0 60 "\t" 7 house_number SQL_Latin1_General_CP1_CI_AS
8 SQLCHAR 0 60 "\t" 8 house_number_completion SQL_Latin1_General_CP1_CI_AS
9 SQLCHAR 0 256 "\t" 9 street SQL_Latin1_General_CP1_CI_AS
10 SQLCHAR 0 256 "\t" 10 street5 SQL_Latin1_General_CP1_CI_AS
11 SQLCHAR 0 30 "\t" 11 postal_code SQL_Latin1_General_CP1_CI_AS
12 SQLCHAR 0 256 "\t" 12 city SQL_Latin1_General_CP1_CI_AS
13 SQLCHAR 0 128 "\t" 13 tel_number SQL_Latin1_General_CP1_CI_AS
14 SQLCHAR 0 128 "\t" 14 fax_number SQL_Latin1_General_CP1_CI_AS
15 SQLCHAR 0 50 "\t" 15 chassis_number SQL_Latin1_General_CP1_CI_AS
16 SQLCHAR 0 10 "\t" 16 brand SQL_Latin1_General_CP1_CI_AS
17 SQLCHAR 0 15 "\t" 17 model_key SQL_Latin1_General_CP1_CI_AS
18 SQLCHAR 0 15 "\t" 18 fiscal_horse_power SQL_Latin1_General_CP1_CI_AS
19 SQLCHAR 0 60 "\t" 19 engine_option SQL_Latin1_General_CP1_CI_AS
20 SQLCHAR 0 24 "\t" 20 first_registration_date ""
21 SQLCHAR 0 24 "\t" 21 current_registration_date ""
22 SQLCHAR 0 100 "\t" 22 sales_dealer SQL_Latin1_General_CP1_CI_AS
23 SQLCHAR 0 100 "\t" 23 licence_plate SQL_Latin1_General_CP1_CI_AS
24 SQLCHAR 0 60 "\t" 24 engine_code SQL_Latin1_General_CP1_CI_AS
25 SQLCHAR 0 12 "\r\n" 25 year ""
ソースファイルからサンプル行を追加できますか? –
なぜ、デフォルトである '\ n'の代わりに' 0x0a'を使用しましたか? *異なる*エラーが発生し、ターミネータが間違っていると考えましたか? SQL Serverは特殊文字を認識しませんか? (たとえそれがあったとしても、 '0x0a'は' \ n'文字ではなく4文字の並びです –
最初に正しいBULK INSERT文を書くようにしてください。*次に*変換する方法を探してみてくださいなぜ文字列を使用するのですか?BULK INSERTを直接呼び出して、パラメータとして変更する必要がある値を渡すのはなぜですか? –