【问题标题】:Prasing a text file with php to convert it to SQL/mysql [closed]用php赞美文本文件以将其转换为SQL / mysql [关闭]
【发布时间】:2013-04-27 03:57:36
【问题描述】:

我有一堆日志纯文本文件,我希望用 php 将它们转换成数据库而不是使用纯文本文件,我拥有的最大日志文件是 14MB,有 26 个日志文件。

我将如何使用 PHP 读取这些文本文件以将它们转换为 SQL?

它们都有相同的格式。

【问题讨论】:

标签: php sql plaintext


【解决方案1】:

大多数情况下,MySQL 会足够聪明地读取文件格式并“好像”插入它,您可以为此使用 LOAD DATA INFILE。您还可以添加“字段终止于”和“行终止于”,两者都将在单引号之间使用正确的值。

LOAD DATA INFILE '/mylog_file.txt' INTO TABLE `my_db`.`my_table` FIELDS TERMINATED BY 'xxx' LINES TERMINATED BY 'xxx' ( first_field, seccond_field );

【讨论】:

    【解决方案2】:

    使用file_get_contents() 获取日志文件文本 — 将整个文件读入字符串

    $file = file_get_contents('log.txt', true);
    

    如果您使用的是 MySQL,请将 $file 变量内容存储在 MEDIUMTEXT 数据类型的字段中。

    以下是大小限制

    TINYTEXT    256 bytes    
    TEXT        65,535 bytes    ~64kb
    MEDIUMTEXT  16,777,215 bytes    ~16MB
    LONGTEXT    4,294,967,295 bytes ~4GB
    

    【讨论】:

    • 日志文件的格式类似于“[2013/1/1 - 0:8:45] [BANK] First Name (IP:ipv4ip) has transfer $9999 to Last Name (IP:ipv4ip) )”。我怎样才能让它只回显时间戳名称和 IP 之类的数据,而不是“已转移”?
    • 它将作为文本读取并存储在数据类型为 MEDIUMTEXT 的表的列中。
    • 我不建议将整个日志文件读入单个字符串。我将逐行遍历文件,将每个条目拆分为每个不同的列或字段,然后将这些行中的每一行作为一行插入到数据库中。这样,您实际上可以对您的数据做一些事情。如果您将整个日志存储到一个单元格中......有什么意义?你不能用它做任何事情。
    • 这就是我打算做的 Sajan,我只需要一个角度来工作。
    猜你喜欢
    • 2013-05-24
    • 2015-08-23
    • 1970-01-01
    • 2019-01-06
    • 2010-12-18
    • 2013-02-27
    • 2011-06-07
    • 2021-12-12
    相关资源
    最近更新 更多