我有一个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, '');
Run Code Online (Sandbox Code Playgroud)
很长一段时间后,我收到了这个错误
致命错误:在290行的C:\ xampp\phpMyAdmin\libraries\dbi\DBIMysqli.class.php中超出了300秒的最大执行时间
我该怎么导入?
错误信息非常清楚,并指出问题所在:php环境中执行时间的限制.所以解决这个问题的一些方法显而易见:
您可以通过提高php配置中的限制,或者如果允许,通过在导入脚本中动态增加限制来实现.所以像ini_set('max_execution_time', 3000).这两个选项都有记录.php文档应始终是您应该开始寻找这样一个问题的答案的第一个位置.
通常,为Web环境选择这种限制,以降低向那里的任何人提供请求的风险.但是,没有什么可以反对在另一个环境中使用不同的配置.导入作业通常不使用Web请求处理,而是通过在命令行(CLI)中使用php来处理.对于这种情况,通常使用单独的配置.再次,这是记录在案的.您可以在此处根据需要配置两个不同的环境.但是,为此您需要在CLI上访问php.这在您自己的系统上没有问题,但通常不适用于廉价的网络托管服务.
由于您导入的数据存储在一个sql文件中,因此一个简单的文本文件,您可以使用任何普通的文本编辑器来修改该文件.注意:文本编辑器,而不是文字处理器.您可以将其中INSERT包含的大语句拆分为几个块.语法非常明显.
现在,您可以选择创建转储,以便它使用许多单独的INSERT语句(每行一个)而不是一个大的组合语句,这取决于您用来创建转储文件的工具.mysqldump例如--skip-extended-insert为此提供标志.使用这样的转储文件,通过简单地拆分文件将导入分成几个较小的块是微不足道的.
如果您可以直接访问数据库服务器(在本例中为MySQL),那么您可以直接与它进行交互,而不是使用phpMyAdmin中间的工具.您可以通过MySQLs source命令直接加载dumpfile .这样你完全独立于php限制.
| 归档时间: |
|
| 查看次数: |
2882 次 |
| 最近记录: |