【问题标题】:Excel CSV. file with more than 1,048,576 rows of dataExcel CSV。包含超过 1,048,576 行数据的文件
【发布时间】:2013-06-01 11:21:23
【问题描述】:

我收到了一个 CSV 文件,其中包含 MAX Excel 无法处理的内容,我真的需要能够查看所有数据。我理解并尝试过“拆分”它的方法,但它不起作用。

一些背景:CSV文件是一个Excel CSV文件,提供文件的人说有大约2m行数据。

当我将其导入 Excel 时,我将数据获取到行 1,048,576,然后将其重新导入到数据中从行 1,048,577 开始的新选项卡中,但它只给了我一行,我知道因为应该有更多的事实(不仅仅是因为“那个人”说有超过200万,而是因为最后几行中的信息)

我认为发生这种情况的原因可能是因为我已将 CSV 文件作为 Excel CSV 文件提供,因此 1,048,576 之后的所有信息都丢失了 (?)。

我需要请求 SQL 数据库格式的文件吗?

【问题讨论】:

  • 尝试使用Open Refine。它已经能够处理那些让 Excel 崩溃的数据集。
  • 仅供参考 - CSV 文件不是 Excel 文件。都是因为 Excel 可以(有时)打开它,并不意味着你应该使用 Excel。
  • 我遇到了同样的问题,并认为我的实验结果已经消失了。证明文件实际上是完整的;只是用不同的程序打开它。
  • 这将有助于查询结果为 CSV stackoverflow.com/a/54879655/1365663

标签: excel csv split max rows


【解决方案1】:

你应该试试delimit 它可以很快打开多达 20 亿行和 200 万列,还可以免费试用 15 天。为我做这份工作!

【讨论】:

  • 有点痛苦,您必须通过电子邮件向他们发送试用密钥。
  • 仅限电脑。没有 OSX 版本。
  • 谢天谢地,可以通过电子邮件获得试用密钥,然后您会收到带有密钥的自动回复。如果您只是想读一读,那很有用。如果您想尝试一下并意识到它可以长期发挥作用,那么 49 美元还不错。我花了太长时间试图找到可以打开 8GB csv 的东西。我必须每月执行一次!
  • 遗憾的是,在高 DPI 屏幕上效果不佳 - 文字几乎小得难以阅读。
  • Delimit 可以,但它是试用版,不允许您进行计算或以其他格式保存
【解决方案2】:

我建议在 MS-Access 中加载 .CSV 文件。

然后,您可以使用 MS-Excel 创建到该源的数据连接(无需实际加载工作表中的记录)并创建连接的数据透视表。然后,您的表中几乎可以有无限数量的行(取决于处理器和内存:我现在有 1500 万行和 3 Gb 内存)。

另一个优点是您现在可以在 MS-Access 中创建聚合视图。通过这种方式,您可以从数亿行创建概览,然后在 MS-Excel 中查看它们(注意 32 位操作系统中 NTFS 文件的 2Gb 限制)。

【讨论】:

  • 如果你有的话,绝对是最快的数据库导入临时解决方案。
  • 值得注意的是,Access 不会导入超过 255 列。如果您正在处理 Excel 的列数过多而不是行数错误,Access 将无法提供帮助。
【解决方案3】:

Excel 2007+ is limited to somewhat over 1 million rows (准确地说是 2^20),所以它永远不会加载你的 2M 行文件。我认为您所说的拆分技术是 Excel 的内置技术,但仅适用于 width 问题,不适用于 length 问题。

我马上看到的最简单的方法是使用一些 file splitting tool - there's tons of 'em 并使用它将生成的部分 csv 文件加载到多个工作表中。

ps:“excel csv 文件”不存在,只有 Excel 生成的文件使用通常称为 csv 文件的格式之一...

【讨论】:

  • 如果 Excel 可以处理 2^32 行,那么对于 OP 来说一切都很好......我猜你的意思是 2^20 行 ;)
  • @Serious arghh,该喝点咖啡了!感谢您的提醒
【解决方案4】:

您可以使用PowerPivot 处理最大 2GB 的文件,这足以满足您的需求。

【讨论】:

    【解决方案5】:

    首先您要将文件格式从 csv 更改为 txt。这很简单,只需编辑文件名并将 csv 更改为 txt。 (Windows 会警告您可能会损坏数据,但没关系,只需单击确定)。然后制作 txt 文件的副本,这样现在您就有了两个包含 200 万行数据的文件。然后打开第一个txt文件并删除第二百万行并保存文件。然后打开第二个txt文件并删除前一百万行并保存文件。现在将这两个文件改回 csv,就像您最初将它们更改为 txt 一样。

    【讨论】:

    • 第一步(编辑文件扩展名)完全没有意义,CSV 只是一个文本文件,因此您可以打开它并使用任何文本编辑器直接进行编辑。
    • @Zenadix 。用记事本打开。或在 cmd..notepad.exe test.csv
    • @ydaetskcoR 我发现在 Excel 中打开一个包含数百万行的文件 .csv 给了我文件未完全打开的错误,而如果它是 .txt 它打开没有问题。跨度>
    • 这不是解决方案。我们无法用记事本打开!
    • 如何快速删除第二百万行?
    【解决方案6】:

    我很惊讶没有人提到Microsoft Query。您可以根据需要从大型 CSV 文件中简单地请求数据,只需查询您需要的数据即可。 (查询的设置就像您在 Excel 中过滤表格一样)

    更好的是,如果有人愿意安装 Power Query 加载项,它超级简单快捷。注意:Power Query 是 2010 和 2013 的加载项,但随 2016 提供。

    【讨论】:

      【解决方案7】:

      如果您有 Matlab,则可以通过其导入工具打开大型 CSV(或 TXT)文件。该工具为您提供了各种导入格式选项,包括表格、列向量、数字矩阵等。但是,由于 Matlab 是一个解释器包,导入如此大的文件确实需要自己的时间,我能够导入一个超过大约 10 分钟内完成 200 万行。

      可通过 Matlab 的主页选项卡单击“导入数据”按钮访问该工具。大文件上传的示例图像如下所示: 导入后,数据会出现在右侧的工作区中,然后可以双击类似 Excel 的格式,甚至可以以不同的格式绘制。

      【讨论】:

        【解决方案8】:

        我能够毫无问题地在 Sublime Text 中编辑一个 17GB 的大 csv 文件(行编号使跟踪手动拆分变得更加容易),然后将其以小于 1,048,576 行的块形式转储到 Excel 中。简单且相当快捷 - 比研究、安装和学习定制解决方案更简单。又快又脏,但它确实有效。

        【讨论】:

          【解决方案9】:

          试用 Microsoft 的 PowerPivot。 Here你可以找到一步一步的教程。它适用于我的 4M+ 行!

          【讨论】:

            【解决方案10】:

            "DO I need to ask for a file in an SQL database format?"是的!!!

            使用数据库,是解决这个问题的最佳选择。

            Excel 2010 specifications .

            【讨论】:

              【解决方案11】:

              使用 MS Access。我有一个包含 2,673,404 条记录的文件。它不会在 notepad++ 中打开,excel 不会加载超过 1,048,576 条记录。它是制表符分隔的,因为我从 mysql 数据库导出数据并且我需要 csv 格式的数据。所以我将它导入到 Access 中。将文件扩展名更改为 .txt,以便 MS Access 将引导您完成导入向导。

              MS Access 将链接到您的文件,以便数据库保持完整,保留 csv 文件

              【讨论】:

                【解决方案12】:

                处理此问题的最佳方法(轻松且无需额外软件)是使用 Excel - 但使用 Powerpivot(其中嵌入了 MSFT Power Query)。只需创建附加到大型 csv 或文本文件的新 Power Pivot 数据模型。然后,您将能够使用嵌入式 X-Velocity(内存压缩)引擎将数百万行导入内存。 Excel 工作表限制不适用 - 因为 X-Velocity 引擎将所有内容以压缩形式存储在 RAM 中。我已经加载了 1500 万行并使用这种技术随意过滤。希望这对某人有所帮助... - Jaycee

                【讨论】:

                  【解决方案13】:

                  我发现这个主题正在研究。 有一种方法可以将所有这些数据复制到 Excel 数据表中。 (我之前有一个 5000 万行的 CSV 文件有这个问题) 如果有任何格式,可以包含附加代码。 试试这个。

                  Sub ReadCSVFiles()
                  
                  Dim i, j As Double
                  Dim UserFileName As String
                  Dim strTextLine As String
                  Dim iFile As Integer: iFile = FreeFile
                  
                  UserFileName = Application.GetOpenFilename
                  Open UserFileName For Input As #iFile
                  i = 1
                  j = 1
                  Check = False
                  
                  Do Until EOF(1)
                      Line Input #1, strTextLine
                      If i >= 1048576 Then
                          i = 1
                          j = j + 1
                      Else
                          Sheets(1).Cells(i, j) = strTextLine
                          i = i + 1
                      End If
                  Loop
                  Close #iFile
                  End Sub
                  

                  【讨论】:

                    【解决方案14】:

                    您可以尝试下载安装TheGun Text Editor。这可以帮助您轻松打开大型 csv 文件。

                    你可以在这里查看详细文章https://developingdaily.com/article/how-to/what-is-csv-file-and-how-to-open-a-large-csv-file/82

                    【讨论】:

                      【解决方案15】:

                      在记事本中将 CSV 拆分为两个文件。这很痛苦,但之后您可以在 Excel 中单独编辑它们。

                      【讨论】:

                      • 记事本确实难以处理大文件,因此 Cygwin 或 GnuWin32 中的 headtail 等命令行文本工具可能更容易。
                      猜你喜欢
                      • 1970-01-01
                      • 2018-07-24
                      • 2020-02-13
                      • 2011-03-17
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多