通过Openrowset和Microsoft.ACE.OLEDB.12.0从csv导入(到不同的列)

时间:2010-09-07 19:03:32

标签: sql-server-2005 sql-server-2008 csv 64-bit openrowset

我想澄清一下如何将.csv中的数据导入到包含3列的表中(请参阅下面的CR Ranking.csv)。我的问题:

 select * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=C:\Work\;HDR=Yes;', 
 'SELECT * FROM [CR Ranking.csv]');

将结果输出到一个 coulmn:

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 :我通过格式文件制作 - 很简单。对不起骚扰。

1 个答案:

答案 0 :(得分:3)

我知道这是一个老帖子,但我想我还是会回应。

我没有尝试使用ACE,但我发现有几个帖子说下面的内容会起作用。请注意自定义分隔(;)设置...

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