如何将超过100000条记录导入mysql数据库?

时间:2015-11-07 07:10:13

标签: php mysql

我有一个sql转储文件。其中有185458条记录。例如

INSERT INTO `cities` (`city_id`, `city_name`, `countryId`, `stateid`, `countryCode`, `latitude`, `longitude`, `zip_code`) VALUES
(2, 'Djelfa', 67, 1, 'DZA', 34.67, 3.25, ''),
(3, 'Valenza', 115, 2, 'ITA', 45.02, 8.63, '15048'),
...
...
...
(185452, 'Bosendurnbach', 17, 771, 'AUT', 48.5, 15.77, ''),
(185453, 'Môlay', 79, 937, 'FRA', 47.73, 3.94, ''),
(185454, 'Miloszyce', 183, 422, 'POL', 51.05, 17.31, ''),
(185455, 'Lovce', 212, 698, 'SVK', 48.45, 18.37, ''),
(185456, 'Winchester', 174, 74, 'NZL', -44.2, 171.28, ''),
(185457, 'Wohlde', 62, 402, 'DEU', 54.4, 9.3, ''),
(185458, 'Chiavazza', 115, 2, 'ITA', 45.58, 8.07, '');

很长一段时间后我收到了这个错误

  

致命错误:超出最长执行时间300秒   第290行的C:\ xampp \ phpMyAdmin \ libraries \ dbi \ DBIMysqli.class.php

我如何导入?

4 个答案:

答案 0 :(得分:8)

错误信息非常清楚,并指出问题所在:php环境中执行时间的限制。因此,解决这个问题的一些方法显而易见:

  1. 增加环境的时间限制
  2. 您可以通过提高php配置中的限制来实现,或者,如果允许,可以通过在导入脚本中动态增加限制来实现。像ini_set('max_execution_time', 3000)这样的东西。这两个选项都有记录。 php文档总是应该是你应该开始寻找这样一个问题的答案的第一个位置。

    1. 使用不同的php环境
    2. 通常会为Web环境选择此类限制,以降低向任何人提供请求的风险。但是,没有什么可以反对在另一个环境中使用不同的配置。导入作业通常使用Web请求处理,但在命令行(CLI)中使用php。对于这种情况,通常使用单独的配置。再次,这是记录在案的。您可以在此处根据需要配置两个不同的环境。但是,为此您需要在CLI上访问php。这在您自己的系统上没有问题,但通常不适用于廉价的网络托管服务。

      1. 将导入分成较小的块
      2. 由于您导入的数据存储在一个sql文件中,因此一个简单的文本文件,您可以使用任何普通的文本编辑器来修改该文件。注意:文本编辑器,不是字处理器。您可以将其中包含的大INSERT语句拆分为多个块。语法非常明显。

        1. 使用许多单独的插入语句而不是一个大的
        2. 根据您用来创建现在要导入的转储文件的工具,您可以选择创建转储,以便它使用许多单独的INSERT语句(每行一个)而不是一个大的结合一个。例如mysqldump为此提供--skip-extended-insert标志。使用这样的转储文件,通过简单地拆分文件将导入分成几个较小的块是微不足道的。

          1. 完全导入php for
          2. 如果您可以直接访问数据库服务器(在本例中为MySQL),那么您可以直接与其进行交互,而不是在中间使用phpMyAdmin工具。您可以通过MySQL source命令直接加载转储文件。这样你完全独立于php限制。

答案 1 :(得分:2)

final ListPopupWindow listPopupWindow = new ListPopupWindow(
                    context);
            listPopupWindow.setAdapter(new ArrayAdapter(
                    context,
                    R.layout.list_row_layout, arrayOfValues));
            listPopupWindow.setAnchorView(your_view);
            listPopupWindow.setWidth(300); 
            listPopupWindow.show();

答案 2 :(得分:1)

最大执行时间有问题 您应该点击此链接:Increase execution time

如果链接不起作用,这与链接povided相同 ini_set('max_execution_time', 300); //300 seconds = 5 minutes
将它放在PHP脚本的顶部。

希望这会对你有所帮助。

答案 3 :(得分:1)

我不认为这是MySQL的问题,这是PHP配置的一个问题。您可以通过将SQL文件直接导入Mysql从命令提示符解决此问题,从而从图片中删除PHP。

由于您使用的是Windows,

C:\xampp\mysql\bin\mysql -u {username} -p {databasename} < file_name.sql