76

我有一个 400 MB 的大型 SQL 备份文件。我正在尝试使用WAMPimport将该文件导入 MySQL 数据库,但由于上传文件太大等多种原因,导入不成功。因此,我继续对 WAMP 下的 PHP 和 MySQL 设置的配置进行了一些更改。所做的更改是

Under WAMP->MySQL->my.ini

    max_allowed_packet = 800M
    read_buffer_size = 2014K

 Under WAMP->PHP->PHP.ini

    max_input_time = 20000
    memory_limit = 128M

这是使用WAMPimport导入如此大的 SQL 文件的正确方法吗?

如果是这样,我是否对配置文件进行了正确的更改?上述变量允许的最大值是多少?

4

13 回答 13

161

您可以通过以下命令行方式导入大文件:

mysql -h yourhostname -u username -p databasename < yoursqlfile.sql
于 2013-03-07T18:01:22.720 回答
39

由于您声明(在对另一个人的回答的澄清评论中)您正在使用 MySQL Workbench,您可以尝试在那里使用“sql script”选项。这将避免使用命令行的需要(尽管我同意另一个答案,即爬上那匹马并学习骑马很好)。

  1. 在 MySQL Workbench 中,转到 File 菜单,然后选择“open script”。这可能需要很长时间,甚至可能使应用程序崩溃,因为它不是用来打开像你描述的那么大的东西。

  2. 更好的方法是使用命令行。确保您的机器上安装了 MySQL 客户端。这意味着实际的 MySQL(不是 Workbench GUI 或 PhpMyAdmin 或类似的东西)。这是描述命令行工具的链接。下载并安装后,在您的机器上打开一个终端窗口,您有两种选择可以将文件系统(例如备份文件)中的数据下载到目标数据库中。一种是使用'source' 命令,另一种是使用< 重定向操作符。

选项 1:从备份文件所在的目录:

$mysql -u username -p -h hostname databasename < backupfile.sql

选项 2:从备份文件所在的目录:

$mysql -u username -p -h hostname
[enter your password]
> use databasename;
> source backupfile.sql

显然,这两个选项都要求您有一个 SQL 备份文件。

于 2013-03-07T18:48:25.647 回答
38

从 mysql 命令窗口使用它:

mysql> use db_name;
mysql> source backup-file.sql;
于 2015-02-05T22:19:18.130 回答
7

您可以使用以下命令从任何 SQL 查询浏览器发出导入命令:

source C:\path\to\file\dump.sql

在查询窗口中运行上面的代码......并等待一段时间:)

这或多或少等于前面所述的命令行版本。主要区别在于它是从 MySQL 内部执行的。对于那些使用非标准编码的人来说,这也比使用命令行版本更安全,因为编码失败的风险更小。

于 2013-03-07T18:24:10.373 回答
3

在内部移动 sql server 时,我们遇到了同样的问题。

我们最终使用的一个很好的解决方案是将 sql 文件拆分为块。有几种方法可以做到这一点。采用

http://www.ozerov.de/bigdump/看起来不错(但从未使用过)

http://www.rusiczki.net/2007/01/24/sql-dump-file-splitter/使用了它,从混乱中获取结构非常有用,您可以从那里获取它。

希望这可以帮助 :)

于 2015-03-18T22:31:32.620 回答
2

如果您在本地进行,则必须做三件事:

在您php.iniphp.cfgPHP 安装中

post_max_size=500M

upload_max_filesize=500M

memory_limit=900M

或设置其他值。重启阿帕奇

或者

使用 PHP大转储工具。这是我见过的最好的。它是免费和开源的。

于 2015-05-12T04:52:09.640 回答
2

有类似的问题,但在 Windows 中。我试图弄清楚如何在 Windows 中打开一个大型 MySQL SQL 文件,这些是我必须采取的步骤:

  • 转到下载网站 ( http://dev.mysql.com/downloads/ )。

  • 下载 MySQL Community Server 并安装它(选择开发人员或完全安装,这样它将安装客户端和服务器工具)。

  • 从开始菜单打开 MySQL 命令行客户端。

  • 输入您在安装时使用的密码。

  • 在提示符mysql>中,输入:

      CREATE DATABASE database_name;
    
      USE database_name;
    
      SOURCE myfile.sql
    

那应该导入您的大文件。

于 2016-06-10T16:14:26.850 回答
2

最简单的解决方案是MySQL Workbench。只需将 .sql 文件文本复制到 MySQL Workbench 的查询窗口并执行即可。所有重命名的事情都将由它完成。

于 2017-06-13T06:04:28.247 回答
1

这个问题是几个月前的问题,但对于其他人来说——

导入大文件的更简单方法是在文件夹 c:/wamp/apps/phpmyadmin3.5.2 中创建一个子目录“上传”,并在同一目录中的 config.inc.php 文件中编辑此行以包含该文件夹名称 $cfg['UploadDir'] = '上传';

然后将传入的 .sql 文件放在文件夹 /upload 中。

从 phpmyadmin 控制台内部工作,转到新数据库并导入。您现在将看到从该文件夹上传文件的附加选项。选择正确的文件并耐心等待。有用。

如果仍然出现超时错误,请尝试添加 $cfg['ExecTimeLimit'] = 0; 到相同的 config.inc.php 文件。

我在导入用户名为 root 且密码与新服务器上的 root 密码不同的 .sql 文件时遇到了困难。我只是在导出 .sql 文件之前取消了密码,并且导入工作顺利。

于 2013-05-14T13:51:54.380 回答
1

在 phpMyAdmin 的第 1.16 项中,他们说:

1.16 我无法上传大转储文件(内存、HTTP 或超时问题)。


从版本 2.7.0 开始,导入引擎已被重新编写,不应出现这些问题。如果可能,请将您的 phpMyAdmin 升级到最新版本以利用新的导入功能。

首先要检查(或要求您的主机提供商检查)是配置文件中upload_max_filesizememory_limitpost_max_size的值。php.ini所有这三个设置都限制了 PHP 可以提交和处理的最大数据大小。一位用户也表示,post_max_size需要memory_limit大于upload_max_filesize。如果您的上传太大或您的托管服务提供商不愿意更改设置,则有几种解决方法:

$cfg['UploadDir']特征。这允许人们通过 scp、ftp 或您喜欢的文件传输方法将文件上传到服务器。然后 PhpMyAdmin 能够从临时目录中导入文件。本文档的配置中提供了更多信息。

在上传之前使用实用程序(例如BigDump)拆分文件。我们不支持此应用程序或任何第三方应用程序,但知道用户已成功使用它。

如果您有 shell(命令行)访问权限,请使用 MySQL 直接导入文件。你可以通过在 MySQL 中发出“source”命令来做到这一点:

source filename.sql;
于 2014-08-09T04:39:09.937 回答
1

我相信最简单的方法是使用 MYSQL 命令行上传文件。

使用来自终端的命令访问 MySQL 命令行并运行源代码

    mysql --host=hostname -uuser -ppassword
    source filename.sql 

或直接从终端

   mysql --host=hostname -uuser -ppassword < filename.sql

在提示下。

于 2015-03-04T12:15:06.690 回答
1

如果您在 Windows 上使用 source 命令,请记住使用f:/myfolder/mysubfolder/file.sql而不是f:\myfolder\mysubfolder\file.sql

于 2016-05-09T10:57:50.023 回答
-3

我的.ini

max_allowed_packet = 800M
read_buffer_size = 2014K

PHP.ini

max_input_time = 20000
memory_limit = 128M
post_max_size=128M
于 2014-06-04T13:37:58.847 回答