Vba 从巨大的csv文件中提取字段并将其写入表格、文本或csv文件

Vba 从巨大的csv文件中提取字段并将其写入表格、文本或csv文件,vba,ms-access,csv,vbscript,Vba,Ms Access,Csv,Vbscript,我有一个巨大的csv文件,它是4GB,不知道有多少行,但有320列 因为它不能在任何程序中打开(除了使用第三方程序将文件分割成多个部分),所以我正试图找到一种提取所需数据的方法。我只需要大约10-15列 我在网上看到了许多解决方案(大多数是在vbs中),但我无法让它们中的任何一个发挥作用。我会遇到错误,但我不知道vbs是否能够对其进行故障排除 有人能帮忙吗 多谢各位 PS这里有一个我发现并尝试使用的vbs代码的例子,我没有运气 最初的错误是“800a01f4变量未定义”,在网上建议去掉OPTIO

我有一个巨大的csv文件,它是4GB,不知道有多少行,但有320列

因为它不能在任何程序中打开(除了使用第三方程序将文件分割成多个部分),所以我正试图找到一种提取所需数据的方法。我只需要大约10-15列

我在网上看到了许多解决方案(大多数是在vbs中),但我无法让它们中的任何一个发挥作用。我会遇到错误,但我不知道vbs是否能够对其进行故障排除

有人能帮忙吗

多谢各位

PS这里有一个我发现并尝试使用的vbs代码的例子,我没有运气

最初的错误是“800a01f4变量未定义”,在网上建议去掉OPTION EXPLICIT。一旦我这样做,下一个错误是“800a01fa类未定义”

在这两种情况下,给出错误的行都是“Set adoJetCommand=New ADODB.Command”


如果您的CSV文件很简单,在意外的地方没有换行符或逗号,那么标准的*nix工具将非常有用。它将允许您轻松地将要查找的15列提取到新的CSV文件中。解释如何在CSV文件上使用它

假设您想从
file.csv
中提取第1、3和7列,那么您可以使用命令执行此操作

awk -F, '{print $1","$3","$7;}' file.csv
您的Windows计算机可能没有安装
awk
。有几种选择:

  • 你可以在网上找到它 ,基本上 在Windows中为您提供类似Unix的shell环境。对我来说,这似乎是一条容易的道路

  • 另一个选择似乎是,但我 我没有这方面的经验,所以不能保证

  • 您可以尝试使用Windows来实现相同的结果 PowerShell,如中所述 --如果你有空的话。再说一次,我没有尝试过

  • 最后但并非最不重要的一点是,您可以切换到Linux,例如在 虚拟机
    awk
    通常在*nix环境中可用


如果您正在解析一个更难处理的CSV文件,请查看一系列建议。

如果您的CSV文件很简单,在意外的地方没有换行符或逗号,那么标准*nix工具将非常有用。它将允许您轻松地将要查找的15列提取到新的CSV文件中。解释如何在CSV文件上使用它

假设您想从
file.csv
中提取第1、3和7列,那么您可以使用命令执行此操作

awk -F, '{print $1","$3","$7;}' file.csv
您的Windows计算机可能没有安装
awk
。有几种选择:

  • 你可以在网上找到它 ,基本上 在Windows中为您提供类似Unix的shell环境。对我来说,这似乎是一条容易的道路

  • 另一个选择似乎是,但我 我没有这方面的经验,所以不能保证

  • 您可以尝试使用Windows来实现相同的结果 PowerShell,如中所述 --如果你有空的话。再说一次,我没有尝试过

  • 最后但并非最不重要的一点是,您可以切换到Linux,例如在 虚拟机
    awk
    通常在*nix环境中可用

如果您正在解析一个更笨拙的CSV文件,请查看一系列建议。

在VBE编辑器中

然后在列表中找到Microsoft Activex数据对象库。 不确定哪个版本可能合适,但可能是6

您的代码似乎不知道ADODB.COMMAND是什么,这应该可以解决这个问题。 我只知道我能够复制您的代码,并且能够在设置引用时成功地单步执行。 希望这有助于在VBE编辑器中解释

然后在列表中找到Microsoft Activex数据对象库。 不确定哪个版本可能合适,但可能是6

您的代码似乎不知道ADODB.COMMAND是什么,这应该可以解决这个问题。 我只知道我能够复制您的代码,并且能够在设置引用时成功地单步执行。
希望这有助于解释

我想补充的是,我看到了这篇文章,并尝试了vbs选项(错误“所需参数之一未给出值”我不理解vba解决方案。也就是说,我不是在没有花几个小时搜索和尝试我能做的一切的情况下发布的。谢谢!!谢谢你,我会修复的,但我担心我的错误在我到达我刚才检查的点之前就抛出了,我不知道字段在哪里不匹配。尝试Dim adoJetCommand作为新的ADODB.在DIM语句中输入命令,看看它是否能让您在代码的逐步执行中走得更远。同时检查您是否有对Microsoft Activex数据对象库的引用我想添加的良好引用,我看到了这篇文章并尝试了vbs选项(错误“没有为所需参数之一提供值”我不理解vba解决方案。也就是说,我不是在没有花几个小时搜索和尝试我能做的一切的情况下发布的。谢谢!!谢谢你,我会修复的,但我担心我的错误在我到达我刚才检查的点之前就抛出了,我不知道字段在哪里不匹配。尝试Dim adoJetCommand作为新的ADODB.在DIM语句中输入命令,看看它是否能让您在代码的执行过程中走得更远。同时检查您是否有对Microsoft Activex数据对象库的引用良好的引用非常感谢!!但出于教育目的,如何使用vba或vbs(如果您知道)))抱歉,我没有这方面的经验。有帮助吗?这是关于VB.net的…@lalachka如果你想要
vba
vbs
,为什么你会接受这个答案?FWIW我喜欢这种方法,我在待办事项列表中添加了
awk
,因为我是新来的,我不完全理解规则。我想如果答案是正确的,那就是答案。日分