如何使用php拆分具有相同标头的大型csv文件?

如何使用php拆分具有相同标头的大型csv文件?,php,mysql,csv,import,split,Php,Mysql,Csv,Import,Split,我有一个大约5gb的大csv文件。我想把它分割成带有标题的小文件。我尝试了stackoverflow上给出的示例,但由于php内存限制,它无法完全工作,而且它没有向每个文件添加头,以及如何仅获取csv的头?您可以按照以下步骤操作: (一) 首先,如果文件包含标题,则可以使用以下命令将较少的行复制到下一个csv文件: 获取内容“C:\start.csv”|选择-前10个|输出文件“C:\stop.csv” 参考链接: 2) 之后,创建相应的表 3) 使用“查询”将csv数据加载到该表中(对于批量加

我有一个大约5gb的大csv文件。我想把它分割成带有标题的小文件。我尝试了stackoverflow上给出的示例,但由于php内存限制,它无法完全工作,而且它没有向每个文件添加头,以及如何仅获取csv的头?

您可以按照以下步骤操作:

(一) 首先,如果文件包含标题,则可以使用以下命令将较少的行复制到下一个csv文件: 获取内容“C:\start.csv”|选择-前10个|输出文件“C:\stop.csv”

参考链接:

2) 之后,创建相应的表

3) 使用“查询”将csv数据加载到该表中(对于批量加载,请使用“加载数据填充”命令)

4) 为此准备shell脚本并运行through命令,该命令可以运行更长时间

(注意:您可以设置net_read_timeout=99999;设置net_write_timeout=99999;这些连接用于更长的MySql连接。)

5) 调用shell脚本


这应该是可行的。

CSV只有一个标题!如果不是,则表示csv数据无效。因此,如果只有一个头,那么逐行读取文件(fopen(),fread()),收集第一行作为头。在读取下一行时,将其直接写入新文件(fwrite()),但不要忘记将收集的头作为第一行。如果写入了X行,请关闭并打开下一个文件进行写入。由于使用了fread()和fwrite(),这里没有给出
内存限制
。实际上,我的目的是将此csv文件加载到mysql中,但由于文件大小,我无法加载。请告诉我如何获取csv文件的头?您使用的是linux系统吗?我使用的是linux共享主机。您可以使用上述步骤。让我知道,如果它工作或如果你面临任何问题。