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

zmi*_*che 5 csv 64-bit sql-server-2005 openrowset sql-server-2008

我想澄清一下如何将.csv中的数据导入到包含3列的表中(参见下面的CR Ranking.csv).我的查询:

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

输出结果为一个库存:

header: Category;INfo;Rank
row 1: Category 1;Info;1
row 2: Category 2;INfo2;2
row 3: Category 3;INfo3;3
Run Code Online (Sandbox Code Playgroud)

是否可以通过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";
Run Code Online (Sandbox Code Playgroud)

CR Ranking.csv:

Category;INfo;Rank
Category 1;Info;1
Category 2;INfo2;2
Category 3;Info3;3
Run Code Online (Sandbox Code Playgroud)

UPD 1: 是否有可能做格式的文件?

UPD 2:我通过格式文件制作 - 很简单.抱歉打扰了.

Jef*_*den 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]')
Run Code Online (Sandbox Code Playgroud)