【问题标题】:Mysql import big sql file [duplicate]Mysql导入大sql文件[重复]
【发布时间】:2023-03-11 00:00:01
【问题描述】:

可能重复:
How to import LARGE sql files into mysql table

使用 php 我通过 odbc 导出了一些表,其中有很多行,它的大小约为 3GB。现在我需要将该表导入我的 mysql 数据库。但是当我尝试

mysql -u root -p DB_development

一段时间后它会说:杀死。

通过 phpmyadmin 界面是不好的。

我的 sql 文件如下所示:

INSERT INTO `LINK_LA_TYP` VALUES
 ('1','8917181','1','24','2'),
 ('1','8934610','1','24','1'),
 ('1','9403766','1','30','1'),
 ('1','9422299','1','30','2'),
  many many many so far lines
 ('1','63139389','321','10017','1');

有什么方法可以导入这样的表吗? (来源和 bigdump 没有帮助)

【问题讨论】:

  • 检查您的 my.cnf 配置,并推送限制...
  • 你的意思是什么限制?此外,当我的文件具有例如 ~100mb 它很好的导入时,所以 sql 是正确的......但是当 3gb
  • 此页面建议将其拆分为多个插入,或增加 max_allowed_pa​​cket:stackoverflow.com/questions/9337855/…

标签: php mysql database phpmyadmin


【解决方案1】:

你正在杀死缓冲区!即使通过 MyAdmin,您也必须增加 PHP 内存。在尝试这个之前我有过类似的事情: 写一段php代码,while循环行,每次清空变量(每行记录一个变量) 然后从 PHP.ini 将您的 PHP Exec Time out 更改为 MAX

类似的东西

$mysqlCode= "INSERT INTO `LINK_LA_TYP` VALUES ('1','8917181','1','24','2')";
mysql_query("$mysqlCode");
$mysqlCode=null;

PS:我强烈建议不要推送缓冲区,您可能会超载服务器。最好是最大化执行时间并不断刷新垃圾收集器,而不是杀死你的内存。

【讨论】:

  • 这不是你可以在一行中完成的事情。数据库转储并不总是每行一个语句,如果定义了视图或触发器,则可以更改 SEPARATOR
  • 每一行的值之间有关系吗!?
  • 不,如果我理解你的话
  • 你的转储中有多少行?!
  • 不知道)以前有大约6000万,我认为大约有80m
【解决方案2】:

我不知道它对你有什么用,但也许会有所帮助。只是一个建议;

我的转储:https://github.com/qeremy/mydump

您可以使用“mydump”来导出您的数据,它会根据您的插入限制导出您的数据(参见_cfg.php:21)。导出后,将您的转储文件解压缩到一个目录,例如local/muydump,然后您将需要一些像这样的简单脚本;

$files = glob("local/mydump/*.sql");
foreach ($files as $file) {
   $sql = file_get_contents($file);
   $db->query($sql);
}

我已经用这个脚本完成了一些数据库传输几 GB 数据(但不记得花了多长时间)。

【讨论】:

    【解决方案3】:

    如果语句的长度超过max_allowed_packet,这是一个数据包或任何生成/中间字符串的最大大小,那么您将无法执行该语句。在这种情况下,您应该将这个非常大的语句拆分为许多小语句。

    【讨论】:

    • 但是如何改变sql呢? (将尝试读取(php)sql并拆分它)
    • 如何改成小查询?
    • 我不确定是否可以用简单的文本编辑器打开这么大的文件,但我想你可以在互联网上找到这个程序(谷歌 - 如何编辑大文件)。
    • 我的意思是,php 读/写函数可以读取这样的文件吗?
    • 另一种变体是编写一个应用程序来创建带有拆分语句的新文件。
    猜你喜欢
    • 2012-12-19
    • 2014-02-13
    • 2014-04-28
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    • 2013-08-16
    • 2016-11-29
    相关资源
    最近更新 更多