53

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

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

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

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

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

4

15 回答 15

28

您应该尝试定界它可以很快打开多达 20 亿行和 200 万列,也可以免费试用 15 天。为我工作!

于 2013-06-30T15:23:08.023 回答
15

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

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

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

于 2014-04-30T09:19:24.210 回答
7

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

于 2013-06-05T21:35:34.487 回答
7

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

于 2013-09-11T15:39:03.513 回答
7

Excel 2007+ 被限制为超过 100 万行(准确地说是 2^20),因此它永远不会加载您的 2M 行文件。我认为您所说的拆分技术是 Excel 的内置功能,但仅适用于宽度问题,不适用于长度问题。

我马上看到的最简单的方法是使用一些文件拆分工具-有大量的 'em并使用它将生成的部分 csv 文件加载到多个工作表中。

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

于 2013-06-05T16:49:59.407 回答
6

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

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

于 2017-05-08T13:54:05.063 回答
5

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

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

于 2016-04-05T13:15:51.210 回答
3

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

于 2018-05-18T20:20:52.860 回答
2

试试 Microsoft 的 PowerPivot。在这里您可以找到分步教程。它适用于我的 4M+ 行!

在此处输入图像描述

于 2020-06-05T09:52:47.157 回答
1

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

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

Excel 2010规范

于 2013-09-25T13:16:59.183 回答
1

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

于 2020-06-02T21:29:04.880 回答
1

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

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

于 2016-11-22T06:42:00.297 回答
0

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

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

于 2020-11-11T08:44:28.783 回答
0

我发现这个主题正在研究。有一种方法可以将所有这些数据复制到 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
于 2019-09-04T05:55:25.847 回答
-1

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

于 2015-05-05T15:21:05.633 回答