代码之家  ›  专栏  ›  技术社区  ›  AFK

将一个包含50000多个条目的数组转换为mysql数据库

php
  •  2
  • AFK  · 技术社区  · 15 年前

    好的,所以我正在帮助别人的网站。他们最初的编码人员认为将整个数据库放在一个数组中是个好主意。

    如何覆盖此设置?

    5 回复  |  直到 15 年前
        1
  •  4
  •   Anax    15 年前

    有一个经典的解决方案,使用 set_time_limit (),它允许您设置脚本的最大执行时间(以秒为单位)。

    不过,您可能希望通过一个查询插入多行,或者将数组转换为CSV并使用更快的加载数据。

    编辑

    插入多行:

    INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
    

    裁判: http://dev.mysql.com/doc/refman/5.1/en/insert.html

    LOAD DATA INFILE 'data.txt' INTO TABLE db2.my_table;
    

    裁判: http://dev.mysql.com/doc/refman/5.1/en/load-data.html

        2
  •  4
  •   Bill Karwin    15 年前

    解决:

    • max_execution_time 在php.ini中设置为0或使用 set_time_limit()

    • 在命令行运行PHP脚本。CLI脚本的时间限制已硬编码为0。

    • LOAD DATA INFILE

        3
  •  2
  •   TNi    15 年前

    你可以用 set_time_limit() 位于页面顶部的函数,如下所示:

    set_time_limit(0);
    
        4
  •  0
  •   Jeriko    15 年前

    ini_set('max_execution_time', $time_in_seconds);

    Source

        5
  •  0
  •   Anders S    15 年前

    如果你用的是mysqli,我会用 multi_query 批量操作。整个过程会快很多。