【问题标题】:VBA - Record Set from csv file [duplicate]VBA - 来自csv文件的记录集[重复]
【发布时间】:2012-10-08 20:14:00
【问题描述】:

可能重复:
Opening csv-File via ADO-connection - Column Limitation to 255 / or just use another file type?

我有以下代码来打开一个 csv 文件作为记录集

Set cN = New ADODB.Connection
Set RS = New ADODB.Recordset
cN.Open ("Provider=Microsoft.Jet.OLEDB.4.0;" & _
               "Data Source=C:\data;" & _
               "Extended Properties=""text; HDR=Yes; FMT=Delimited; IMEX=1;""")
RS.ActiveConnection = cN
RS.Source = "select * from myFile.csv"

以上代码适用于列数少于 255 的文件。但是,如果我的 CSV 文件有超过 255 列,我只会得到前 255 列数据。有没有其他方法可以将 CSV 文件打开到 ADODB 记录集中?

【问题讨论】:

  • @Sean Cheshire - 该链接没有令人满意的答案

标签: vba excel adodb recordset


【解决方案1】:

问题在于访问数据库。每个表的字段不能超过 255 个:

http://office.microsoft.com/en-us/access-help/access-2007-specifications-HA010030739.aspx http://office.microsoft.com/en-us/access-help/access-2010-specifications-HA010341462.aspx

根据您的数据,您是否可以将其转置或拆分为多个表?

【讨论】:

  • 不幸的是,没有。代码 sn-p 实际上是在一个返回类型为 ADODB.RecordSet 的函数中。这就是为什么,我正在寻找一个可以让我返回某种包含所有列和行的数据结构的答案
  • 数据是否必须立即在磁盘上?您能否改为返回一个数组或集合,然后再写入磁盘?
  • 我猜不是,鉴于您对肖恩的回应。没有“修复”。您必须找到类似于我在上面的评论或 Sean 的链接中提出的解决方法。
  • 其他数据库(MySQL、PostGreSQL)对它们的表有不同的列限制。您也许能够将数据加载到另一种类型的数据库中,然后返回该数据库的记录集。我实际上不确定 ADO 本身是否有 255 列的限制,你必须检查一下。您还可以使用 RecordSet 中所需的方法/属性创建自己的对象来表示您的数据。
  • 我将改为返回一个数组。是否可以返回整个 csv 文件,还是必须逐行返回?另外,如果您可以将您的解决方案作为答案而不是评论给我,我会继续接受它。
猜你喜欢
  • 1970-01-01
  • 2015-01-13
  • 1970-01-01
  • 2011-10-25
  • 2018-07-10
  • 2016-12-22
  • 2014-02-07
  • 2016-09-12
  • 1970-01-01
相关资源
最近更新 更多