5


1

OpenrowsetおよびMicrosoft.ACE.OLEDB.12.0を介してcsvから(異なる列に)インポートする
csvから3列のテーブルにデータをインポートする方法を明確にしたい(以下のCR Ranking.csvを参照)。 私の質問:
 select * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=C:\Work\;HDR=Yes;',
 'SELECT * FROM [CR Ranking.csv]');

結果を* 1 *列に出力します。

header: Category;INfo;Rank
row 1: Category 1;Info;1
row 2: Category 2;INfo2;2
row 3: Category 3;INfo3;3

Openrowsetを介して.csvのデータを* 3 *列に分割することは可能ですか? Openrowset paramsから何かを見逃したと思いますが、おそらく非常に簡単ですか?

はい:Office 2010の64ビットODBCドライバーを使用して、.csv、.txtなどのドライバーを取得しています…​ プロバイダーが「Microsoft.ACE.OLEDB.12.0」である理由は、このため、この接続文字列が機能していないようです:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\';Extended Properties="text; HDR=NO; FMT=Delimited";

CR Ranking.csv:

Category;INfo;Rank
Category 1;Info;1
Category 2;INfo2;2
Category 3;Info3;3
  • UPD 1:* _フォーマットなしでファイルをフォーマットすることは可能ですか?

  • UPD 2 *:Formatファイルで作成しました-簡単でした。 お邪魔してすみません。

1 Answer


3


私はこれが古い投稿であることを知っていますが、とにかく応答すると思いました。

ACEを使用してこれを試したことはありませんが、次のようなものが機能すると言う投稿がいくつか見つかりました。 カスタムのDelimited(;)設定に注意してください…​

select top 50 * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=c:\temp\captell;HDR=Yes;FORMAT=Delimited(;)', 'SELECT * FROM [DASDGIGS0013046591395.TXT]')