【问题标题】:How to read a bulk data feed via php?如何通过 php 读取批量数据提要?
【发布时间】:2011-03-13 23:12:35
【问题描述】:

我有一个大文件,我想通过 php 读取,然后在 MySQL 中插入各种字段。

Feed 中的每个文件都是纯文本格式,分为列和行。每条记录都有相同的字段集。以下是每个字段和记录的分隔符:

字段分隔符 (FS):SOH(ASCII 字符 1) 记录分隔符 (RS) : STX (ASCII 字符 2) + "\n"

如果我查看文件的前几行,它们看起来像这样:

#export_dateapplication_idlanguage_codetitledescriptionrelease_notescompany_urlsupport_urlscreenshot_url_1screenshot_url_2screenshot_url_3screenshot_url_4screenshot_width_height_1screenshot_width_height_2screenshot_width_height_3screenshot_width_height_4
#primaryKey:application_idlanguage_code
#dbTypes:BIGINTINTEGERVARCHAR(20)VARCHAR(1000)LONGTEXTLONGTEXTVARCHAR(1000)VARCHAR(1000)VARCHAR(1000)VARCHAR(1000)VARCHAR(1000)VARCHAR(1000)VARCHAR(20)VARCHAR(20)VARCHAR(20)VARCHAR(20)
#exportMode:FULL

为了将这个文件读入 PHP,我正在苦苦挣扎,任何人都可以帮助基本的 PHP 读取每条记录,并为每个字段分配一个变量,然后我就可以将其写入 MySQL .设置好各个字段后,我就可以处理写入 SQL 的操作了。

提前致谢,

格雷格

【问题讨论】:

    标签: php import flat-file


    【解决方案1】:

    PHP 无法读取大于 2gb 的文件(32 位限制)。

    对于较小的尺寸,使用简单的fopen 函数

    而插入mysql就是macthing模式和插入的全部工作。

    如果表的结构每行都相同,那么最好手动进行一次,然后通过正则表达式或其他函数(如explode和split)提取值来执行插入。

    【讨论】:

    • 谢谢,fopen 会读取文件,但我如何选择每个字段并将其传递到变量中?
    • 文件的张贴行不足以回答或编码那件事。粘贴更多行,当前行集仅显示结构而不是实际值
    【解决方案2】:

    如果每一行在每个字段之间都有分隔符,您可以查看fgetcsv()

    当您在一行上使用 fgetcsv() 时,它将返回一个包含该行内容的数组。因为你有几行,所以把函数放在一个while()循环中(看看example #1

    【讨论】:

      猜你喜欢
      • 2016-08-31
      • 1970-01-01
      • 2016-11-19
      • 1970-01-01
      • 2022-10-21
      • 2013-05-18
      • 2016-09-27
      • 2023-03-30
      • 2011-09-17
      相关资源
      最近更新 更多