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

Posted

技术标签:

【中文标题】通过 Openrowset 和 Microsoft.ACE.OLEDB.12.0 从 csv 导入(到不同的列)【英文标题】:Import from csv (into different columns) via Openrowset and Microsoft.ACE.OLEDB.12.0 【发布时间】:2010-09-07 19:03:32 【问题描述】:

我想澄清如何将 .csv 中的数据导入到具有 3 列的表中(请参阅下面的 CR Ranking.csv)。我的查询:

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

将结果输出到一个列:

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 参数中的一些内容,也许这很容易?

是的:我正在使用 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:我通过格式文件制作 - 很简单。打扰了。

【问题讨论】:

一直在尝试将简单的 Jet csv 连接字符串转换为 ACE 驱动程序。这是我在浏览了大约 75 个不同的网页后看到的第一个从 64 位 ACE 访问 csv 文件的工作示例。谢谢!显然我的主要缺陷是在 Database 属性周围使用双引号(如果引用则不起作用) 使用列定义创建一个 schema.ini 文件。这是一个链接msdn.microsoft.com/en-us/library/ms974559.aspx 【参考方案1】:

我知道这是一篇旧帖子,但我还是想回复一下。

我没有尝试过使用 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]')

【讨论】:

确认这适用于 Excel 2010 x64 和 SQL Server Express 2008 R2。 SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Text;HDR=YES;FMT=Delimited;Database=C:\Data\;"', 'SELECT * FROM [table.csv]')跨度> FORMAT=Delimited(;) 无法从分号分隔的文件中读取,尽管这将从逗号分隔的文件中读取 晚安 我一直在努力解决这个问题!我的问题通过 [filename.txt] 中的“[”括号解决了 - 我收到了许多用于链接服务器类型错误的 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”。 +1,谢谢!

以上是关于通过 Openrowset 和 Microsoft.ACE.OLEDB.12.0 从 csv 导入(到不同的列)的主要内容,如果未能解决你的问题,请参考以下文章

OPENROWSET read excel

SQL的OPENROWSET开启和使用方法

如何使用 OPENROWSET 导出以分号分隔的数据?

SQL Server 使用 OPENROWSET 导出到 Excel

使用 OPENROWSET 将 SQL 结果导出到 Excel,但提供程序尚未注册

数据仓库之抽取数据:通过openrowset执行存储过程