如何在phpmyadmin中导入大型SQL文件


80

我想导入一个大约12 mb的sql文件。但是它在加载时引起问题。有什么方法可以上传而不拆分sql文件吗?


1
使用某些MySQL工具,例如mysql workbenchormysql Yog
diEcho

您也可以在这里stackoverflow.com/questions/9593128/…Dunn上看到它 。

如果您无法使用mysql控制台,则有一个有趣的解决方案来自phpmyadmin文档:ozerov.de/bigdump
Paolo Gibellini,2013年

Answers:


96

根据您的操作系统,尝试从mysql控制台导入它。

mysql -u {DB-USER-NAME} -p {DB-NAME} < {db.file.sql path}

如果它在远程服务器上,则使用-h标志指定主机。

mysql -u {DB-USER-NAME} -h {MySQL-SERVER-HOST-NAME} -p {DB-NAME} < {db.file.sql path}

1
好的,谢谢回复。我在php.ini中进行了更改并压缩了文件。它对我
有用

3
最快的方法做到这一点!
阿里斯

1
这是一个很好的答案。对于可能不太精通的任何人,您只需将数据库文件上传到主机上的文件管理器,然后在主机上使用SSH即​​可在本地操作。这比mysql在服务器上仅进行一次迁移安装要容易得多。感谢您的帮助!(而且,我不需要括号)
DomainsFeatured

1
对于那些想知道的人,您需要浏览到MySQL / bin文件夹以运行命令。很棒。谢谢。
艾蒂安·杜普依斯

1
那他们没有密码怎么办?使用具有默认用户名root的数据库?使用此命令要求输入密码。
Hkachhia

67

您必须做的三件事:

php.iniphp安装中(请注意:取决于您是否希望它用于CLI,apache或nginx,请找到要操作的正确php.ini)

post_max_size=500M

upload_max_filesize=500M

memory_limit=900M

或设置其他值。

如果已安装apache,请重新启动/重新加载apache;如果使用nginx,请为nginx重新启动php-fpm。

远程服务器?

max_execution_time也要增加,因为上传文件需要时间。

NGINX安装?

你将不得不增加:client_max_body_size 912M;/etc/nginx/nginx.confhttp{...}


3
正确答案。这三行必须

这必须添加到您的apache目录中,而不是cli目录中(至少已在我的Ubuntu机器上进行了测试)
Bad_Neighbor

更改此设置/etc/php/7.1/apache2/php.ini不起作用
W.Doch

@RickSanchez您确定您在apache上运行此php版本?请运行phpinfo()并验证值是否已正确设置并且服务器已重新启动
Toskan

1
不要忘记提高php ini中的max_execution_time值并重新启动apache
hamboy75 '18

62

编辑位于phpmyadmin目录中的config.inc.php文件。就我而言,它位于C:\wamp\apps\phpmyadmin3.2.0.1\config.inc.php

找到上面的线并将$cfg['UploadDir']其更新为$cfg['UploadDir'] = 'upload';

然后,在phpmyadmin目录中创建一个名为“ upload”的目录(对我而言,位于C:\wamp\apps\phpmyadmin3.2.0.1\upload\)。

然后将您要导入的大型SQL文件放入新upload目录。现在,当您进入phpmyadmin控制台中的db import页面时,您会注意到以前没有的下拉菜单-它包含您刚刚创建的上载目录中的所有sql文件。现在,您可以选择此项并开始导入。

如果您没有在Windows上使用WAMP,那么我相信您可以在没有太大麻烦的情况下使其适应您的环境。

参考:http : //daipratt.co.uk/importing-large-files-into-mysql-with-phpmyadmin/comment-page-4/


5
使用最新版本的phpMyAdmin时,根本没有$ cfg ['UploadDir'] var。但是,此解决方案仍然可以通过将var添加到文件中的新行上而起作用。
2013年

var位于config.default.php同一目录的,使用phpmyadmin版本4.6.4
KAD

1
无法再编辑之前的评论,目录为libraries/config.default.php
KAD

在花了两天时间尝试使用失败结果的MySQL命令行后,这是一个很好的解决方案。
youhana

22

LINUX用户解决方案(使用sudo运行)

创建“上传”和“保存”目录:

mkdir /etc/phpmyadmin/upload
mkdir /etc/phpmyadmin/save
chmod a+w /etc/phpmyadmin/upload
chmod a+w /etc/phpmyadmin/save

然后编辑phpmyadmin的配置文件:

gedit /etc/phpmyadmin/config.inc.php

最后,为“上载”和“保存”目录添加绝对路径:

$cfg['UploadDir'] = '/etc/phpmyadmin/upload';
$cfg['SaveDir'] = '/etc/phpmyadmin/save';

现在,只需将文件放在/etc/phpmyadmin/upload文件夹中,然后就可以从phpmyadmin中选择它们。

在此处输入图片说明

希望对您有所帮助。


使用这种方法,File could not be read!当我单击上传表单上的“提交”按钮时,phpmyadmin会给我一条消息。现在在排除故障的过程中。

@JoeRocc是否找到解决问题的方法?也许是许可或所有权问题。尝试sudo chmod 777 your-filename.sql
Guille Acosta

2
775。不是777。不应建议将777设置为在实时服务器上运行。它具有安全性问题。
Koushik Das

14

只需一行就可以完成(确保mysql命令作为全局命令可用,或者仅转到mysql安装文件夹并输入bin文件夹)

mysql -u database_user_name -p -D database_name < complete_file_path_with_file_name_and_extension 

这里

  • u 代表用户
  • p 代表密码
  • D 代表数据库

---不要忘记在<数据库名称后添加符号---

具有名称和扩展名的完整文件路径可以像

c:\folder_name\"folder name"\sql_file.sql

---如果您的文件夹和文件名比双引号包含的空格要大,则-

提示:您可以在-p此之后输入密码,但是不建议您这样做,因为它会向当时正在观看屏幕的其他人显示,如果您不在那里输入密码,它将询问您何时按Enter执行命令。



7

.sql通过在httpd.conf文件中进行以下配置,我能够导入一个大文件:

Alias /phpmyadmin "C:/xampp/phpMyAdmin/"
<Directory "C:/xampp/phpMyAdmin">
    AllowOverride AuthConfig
    Require all granted

    php_admin_value upload_max_filesize 128M
    php_admin_value post_max_size 128M
    php_admin_value max_execution_time 360
    php_admin_value max_input_time 360
</Directory>

4

您将必须编辑php.ini文件。更改以下内容upload_max_filesize post_max_size以适应您的文件大小。

尝试运行phpinfo()以查看其当前值。如果您不愿意直接更改php.ini文件,请尝试 ini_set()

如果那也不是一个选择,那么您可能想尝试一下bigdump




2

我偶然发现了一篇文章,这对我来说效果最好

  1. 使用您喜欢的代码编辑器在phpmyadmin目录中打开config.inc.php文件。在您本地的MAMP环境中,它应该位于以下位置:

硬盘»应用程序»MAMP»bin»config.inc.php

  1. 搜索短语$cfg[‘UploadDir’]–它看起来像这样:

$cfg['UploadDir'] = '';

  1. 将其更改为如下所示:

$cfg['UploadDir'] = 'upload';

  1. 然后,在该phpmyadmin目录中,创建一个新文件夹并命名为上载。

  2. 提取要导入的大型.sql文件,然后将其放入新的上载文件夹中。

  3. 现在,下次您将数据库导入phpMyAdmin时,将在“要导入的文件”部分的标准浏览区域下方看到一个新的下拉字段。


2

好的,您使用PHPMyAdmin,但有时最好的方法是通过终端:

  • 连接到数据库:(mysql -h localhost -u root -p将root和localhost切换为用户和数据库位置)
  • 从转储开始导入: \. /path/to/your/file.sql
  • 因为使用终端机,所以请对自己夸张咖啡。

就是这样。请记住,如果您在远程服务器中,则必须将.sql文件上传到某个文件夹。


2

对于那些共享主机的答案。最好使用这个小脚本,我只是用来将300mb DB文件导入到服务器中。该脚本称为Big Dump。

提供脚本以在资源受限的服务器上导入大型数据库


这实际上是一个很好的解决方案,但由于URL一天可能无效,您对此表示不满。请添加有关此脚本的一些信息,尤其是其名称。
取而代之的是

它称为“大转储”,它可以在将大型数据库文件导入服务器时阻止SQL Server停止或被中断。顺便说一句,URL可能随时会拒绝其他答案,并且没有一个人被否决
c0d3x1337 '18

1

上载大文件的最佳方法不使用phpmyadmin。导致phpmyadin首先使用php upload类上传文件,然后执行sql,导致大部分时间超时。

最好的方法是:输入wamp文件夹> bin> mysql> bin目录,然后编写此行

mysql -u root -p listnames <Latestdb.sql, 这里的listnames首先是创建数据库的名称,而newdb.sql是数据所在的sql文件名。

但是重要的一点是,如果您的数据库文件包含unicode数据。您必须先打开Latestdb.sql文件,然后再打开任何一行。该行是:

设置名称utf8; 然后您的命令模式运行此脚本代码


1
  1. 在文本编辑器(如记事本)中打开sql文件
  2. 全选->复制
  3. 转到phpMyAdmin,选择数据库,然后转到SQL选项卡
  4. 将您复制的内容粘贴到剪贴板中
  5. 它可能会弹出一个JavaScript错误,请忽略它
  6. 执行

这不是一个好习惯!这样做时,大文本将导致大问题。最好的方法是将php.ini配置为允许大型导入或通过mysql导入。
MarceloAgimóvel18年

1

在MAMP中,您可以通过以下方式加载大文件:

  1. 在此目录/ MAMP / bin / phpMyAdmin /“ folderName”中创建一个新文件夹

  2. 然后编辑“ /MAMP/bin/phpMyAdmin/config.inc.php”第531行:

       $cfg['UploadDir']= 'folderName';   
    
  3. 将.sql或.csv文件复制到此文件夹中。

  4. 现在,您将在“ PhpMyAdmin”中拥有另一个选项:从Web服务器上载目录中选择newFolder /:您可以选择文件并将其导入。

    您现在可以加载任何文件!


0

更改服务器设置,以允许上传大于12 mb的文件,您应该可以。通常,用于文件上传的服务器设置设置为5到8 mb。


1
这不能为问题提供答案。要批评或要求作者澄清,请在其帖子下方发表评论。-来自评论
塞巴斯蒂安·布洛希

1
实际上,在发布此答案时,这是最常见的错误(3年前),默认情况下文件上传不够大。他正在使用phpmyadmin == webinterface。导入==从光盘上传。上传==服务器设置。服务器设置==默认值是3年前的5或8 mb。因此,我看不出这没有提供答案。是的,由于他没有提供他正在使用的服务器(apache,ngix,iis等),因此我没有亲自指导他如何设置。
Tschallacka

0

一种解决方案是使用命令行。

mysql -h yourhostname -u username -p databasename < yoursqlfile.sql

只要确保明确说明要导入的SQL文件的路径即可。

就我而言,我使用了它。

mysql -h localhost -u root -p databasename < /home/ejalee/dumps/mysqlfile.sql

瞧!你已准备好出发。



0

PHPmyadmin还接受gzip格式的压缩文件,因此您可以gzip文件(如果没有压缩文件,请使用7Zip)并上传压缩文件。由于其为文本文件,因此具有良好的压缩率。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.