2016-07-11 34 views
2

私はcsvからデータを取り込み、テーブルにインポートするBULK INSERTタスクを実行しました。問題は、列の1つにコンマを入れることができるため、インポートが期待通りに機能しないことだけです。バルク挿入fmtテキスト修飾子

私は、以下の詳細きた内容は、フォーマット(FMT)ファイルを作成することによってこの問題を解決するために試してみた: -

9.0 
6 
1  SQLCHAR  0  50  ","  1  "Identifier"         Latin1_General_CI_AS 
2  SQLCHAR  0  50  ","  2  "Name"            Latin1_General_CI_AS 
3  SQLCHAR  0  50  ","  3  "Date of Birth"           Latin1_General_CI_AS 
4  SQLCHAR  0  50  ","  4  "Admission"            Latin1_General_CI_AS 
5  SQLCHAR  0  50  ","  5  "Code"        Latin1_General_CI_AS 
6  SQLCHAR  0  50  "\r\n" 6  "Length"              Latin1_General_CI_AS 

コラム私を引き起こし、痛みが列2「名前」です。

私は、テキスト修飾され、カンマを含むとして列を識別するためにいくつか試しましたが、私が望む結果が得られません。

私は、次に変更した場合: -

"\"," - 私はこのような何かを得る - 「リチャードソン、マット

これは正しくありませんので、他のいくつかの上で示唆したように、私は、代わりにこれを試してみましたフォーラム/サイト: -

"\",\"" 

これは実際にはまったく動作していませんが、私にエラーを与える

Cannot obtain the required interface ("IID_IColumnsInfo") from OLE DB provider "BULK" for linked server "(null)".Bulk load: An unexpected end of file was encountered in the data file. 

私はいくつかの組み合わせを試みましたが、この権利を得ることはできません。どんな助けや指導も大いに感謝されます。

答えて

1

フォーマットファイルに関するご質問には本当に答えませんが、解決策を得るには可能です。

フォーマットファイルは1980年代から私にとっては理解できないものですが、一括挿入は大変申し訳ありません。したがって、私は、数行のpowershellでデータを整理する傾向があります。 ...あなたのアイデアを得る

Import-Csv -Path $dirtyCsv | 
ConvertTo-CSV -NoType -Delimiter '|' | 
%{ $_.Replace('"','') } | 
Out-File $cleanCsv 

この:ここで私は出力に引用いくつかのランダムを除去し、レコード内のカンマを可能にするために、パイプ区切りにCSVに変換するために最近使用例です単純にインポート:

BULK INSERT SomeTable FROM 'clean.csv' WITH (FIRSTROW = 2, FIELDTERMINATOR = '|', ROWTERMINATOR = '\n') 

これは役立ちます。