我怎样才能导入大型(14 GB)的MySQL转储文件到一个新的MySQL数据库?
Answer 1:
我四处搜寻,也只有这种解决方案帮助我:
mysql -u root -p
set global net_buffer_length=1000000; --Set network buffer length to a large byte number
set global max_allowed_packet=1000000000; --Set maximum allowed packet size to a large byte number
SET foreign_key_checks = 0; --Disable foreign key checking to avoid delays,errors and unwanted behaviour
source file.sql --Import your sql dump file
SET foreign_key_checks = 1; --Remember to enable foreign key checks when procedure is complete!
答案是找到这里 。
Answer 2:
您是否尝试过只使用mysql
直接命令行客户端?
mysql -u username -p -h hostname databasename < dump.sql
如果你不能做到这一点,有任意数量的实用工具,你可以通过谷歌搜索是帮助你找到一个导入大型自卸到MySQL,像BigDump
Answer 3:
第一开>命令行
cd..
cd..
f: -- xampp installed drive
cd xampp/mysql/bin
mysql -u root -p
set global net_buffer_length=1000000; --Set network buffer length to a large byte number
set global max_allowed_packet=1000000000; --Set maximum allowed packet size to a large byte number
SET foreign_key_checks = 0; --Disable foreign key checking to avoid delays,errors and unwanted behaviour
use DATABASE_NAME;
source G:\file.sql; --Import your sql dump file
SET foreign_key_checks = 1; --Remember to enable foreign key checks when procedure is complete!
Answer 4:
我张贴我发现在几个我见过的答复是没有提到什么,我碰到了,和apprently这甚至会破坏BigDump,因此,应检查:
我试图通过加载Linux命令行500兆转储和一直得到“MySQL服务器消失”的错误。 在my.conf设置没有帮助。 什么结果来修复它是...我是做一个大的扩展插入这样的:
insert into table (fields) values (a record, a record, a record, 500 meg of data);
我需要格式化文件为这样的单独插入:
insert into table (fields) values (a record);
insert into table (fields) values (a record);
insert into table (fields) values (a record);
Etc.
并生成转储,我用了这样的事情,它的工作就像一个魅力:
SELECT
id,
status,
email
FROM contacts
INTO OUTFILE '/tmp/contacts.sql'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES STARTING BY "INSERT INTO contacts (id,status,email) values ("
TERMINATED BY ');\n'
Answer 5:
简单的解决方法是运行此查询: mysql -h yourhostname -u username -p databasename < yoursqlfile.sql
如果你想用进度条来导入,试试这个: pv yoursqlfile.sql | mysql -uxxx -pxxxx databasename
pv yoursqlfile.sql | mysql -uxxx -pxxxx databasename
Answer 6:
对于Windows,我使用Navicat的保费。 它可以让你的数据库对象从一个数据库转移到另一个,或到SQL文件。 目标数据库可以是在同一台服务器为源或另一个服务器上。
Navicat的在线手册窗口
Answer 7:
使用source命令导入大型数据库
mysql -u username -p
> source sqldbfile.sql
这可以导入任何大型数据库
Answer 8:
在最近的一个项目中,我们曾与工作和操纵收集了大量数据的挑战。 我们的客户有50个CSV文件,从30 MB到大小350 MB和所有的一切含有大约20万行的数据和数据的15列给我们提供。 我们的最终目标是要导入和操作数据到MySQL关系数据库来的力量,我们还开发了前端的PHP脚本。 现在,随着数据集这个大或更大的工作不是简单的任务,并在它的工作,我们要花点时间来分享一些使用大型数据集这样的工作时,你应该考虑和知道的事情。
1.分析数据集预导入我不能足够强调这第一步! 请确保你花时间去分析你与导入前的所有工作数据。 获得一个了解的东西全部数据的代表,你需要什么有关什么,什么类型的操纵列最终将节省您的时间,从长远来看。
2. LOAD DATA INFILE是你的朋友导入大型数据文件如与我们(和较大的)工作的那些可能会很难做,如果你继续前进,并尝试定期CSV通过像phpMyAdmin的工具插入。 它不仅将在很多情况下会失败,因为你的服务器将无法处理文件上传大一些,由于上传大小限制和服务器超时,您的数据文件,但即使没有成功,这一过程可能需要几个小时根据我们的硬件。 SQL函数LOAD DATA INFILE的设立是为了处理这些大型数据集,并会显著缩短了处理导入过程的时间。 值得注意的是,这可以通过phpmyadmin执行,但你可能仍然有文件上传问题。 在这种情况下,您可以手动上传文件到您的服务器,然后从PHPMyAdmin的执行(见他们的更多信息手册),或通过您SSH控制台执行命令(假设你有你自己的服务器)
LOAD DATA INFILE '/mylargefile.csv' INTO TABLE temp_data FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'
3. MYISAM VS InnoDB的或大或小的数据库是一件好事,需要一点时间来考虑的数据库引擎,你要使用你的项目。 你要了解的两个主要引擎是MyISAM和InnoDB,每个人都有自己的优点和缺点。 简而言之,要考虑的事情(一般)如下:
MYISAM
- 更低的内存使用率
- 允许全文搜索
- 表级锁 - 锁定在写整个表
- 伟大的读取密集型应用
InnoDB的
- 项目清单
- 使用更多的内存
- 没有全文搜索支持
- 更快的性能
- 行级锁 - 锁单列上写
- 伟大的读/写密集型应用程序
4.计划您精心设计的MySQL数据库AnalyzeYour设计/结构将是在如何执行的一大因素。 把你的时间,当涉及到规划出不同的领域和分析数据,以找出最佳的字段类型,默认值和字段长度。 要适应正确的数据量,并尽量避免VARCHAR列和过于庞大的数据类型时数据不保证它。 当你与你的数据库完成后,一个额外的步骤,你让想看什么MySQL的建议作为字段类型为您的所有不同的领域。 您可以通过执行以下SQL命令这样做:
ANALYZE TABLE my_big_table
其结果将是每个列的信息说明,并应当具有适当的长度,沿着什么样的数据类型的建议一起。 现在你不一定需要遵循的建议,因为它们是完全基于现有的数据,但它可以帮助把你在正确的轨道上,并让你思考
5.索引还是不索引对于像这样大是创建基于关闭的,你需要在前端的数据应该如何对你的数据正确的索引无限重要的,但如果你打算操纵数据的数据集从放置过多的索引上的数据事先避免。 不仅将它会让你的SQL表较大,但它也将放慢柱状加法,减法和额外的索引某些操作。 随着我们的数据,我们需要采取我们刚才导入的信息,并将其分解成几个不同的表创建一个关系结构以及采取一定的列和分裂信息写入附加列。 我们放在我们知道这将帮助我们与操纵柱的最低限度的指标。 总而言之,我们用了1代大表由20万行数据,并拆分其信息到6个不同的表,在他们的主数据块与基于关闭现有内容新创建的数据一起。 我们做这一切通过编写小PHP脚本解析和移动数据。
6.找到从编程的角度的大型数据库的一种工作性平衡的很大一部分是速度和效率。 让所有的数据到数据库是伟大的,但如果你写访问数据的脚本是缓慢的,有什么意义呢? 当使用大型数据集它,你花时间去了解所有的脚本执行的查询和创建索引,以帮助这些查询在可能的情况是非常重要的。 分析你的查询做一个这样的方式是通过执行以下SQL命令:
EXPLAIN SELECT some_field FROM my_big_table WHERE another_field='MyCustomField';
通过添加EXPLAIN到您的查询的MySQL的开始会吐出描述什么指标也试图使用,确实使用了信息,以及如何使用它们。 我这个标记点“找到一个平衡”,因为虽然指标可以帮助你的脚本执行速度更快,他们可以很容易使其运行速度较慢。 你需要确保你指数所需要的和必要的东西。 每个索引占用磁盘空间,并增加了表的开销。 完成修改你的表每一次,你必须重建您必须在这些行对于特定行的索引和索引越多,时间越长,将采取。 这一切都归结为使智能索引,高效的SQL查询和最重要的标杆,你去了解每个查询的是做多久它采取这样做。
7.指数开,指数关我们制作的数据库和前端脚本,客户端和我们开始注意到,需要改变的小东西,并且需要我们进行更改数据库。 其中的一些变化包括增加/删除列和改变列类型。 正如我们已经设置了对数据的一些指标,使得这些变化所需要的服务器做一些严肃的工作,以保持在适当位置的索引和处理任何修改。 在我们小的VPS服务器,一些变化正在向上6小时才能完成......当然没有帮助我们能够做到快速发展。 解决方案? 关闭索引! 有时,最好把索引断开,进行更改,然后打开索引回...。特别是如果你有很多不同的变化做出。 随着关闭索引,改变了几秒钟的时间,以分钟与小时。 当我们很高兴与我们的变化,我们只是把我们的指数回。 当然,这花了相当长的一段时间来重新索引一切,但它至少能一下子重新索引一切,从而减少一个做出这些改变一个所需的总时间。 以下是如何做到这一点:
禁用索引: ALTER TABLE my_big_table DISABLE KEY
启用索引: ALTER TABLE my_big_table ENABLE KEY
8.给MySQL的调整一下 ,不要忽视你的服务器,当涉及到让你的数据库和脚本运行迅速。 你的硬件需要同样多的关注和调整作为数据库和脚本执行。 尤其是看你的MySQL配置文件,看看有什么变化,你可以更好地提高其性能是非常重要的。 一个伟大的小工具,我们遇到的是MySQL的调谐器http://mysqltuner.com/ 。 这是一个小巧的Perl脚本,您可以下载到您的服务器,并通过SSH运行看你可能想使你的配置有什么变化。 请注意,您应积极运行调谐器,使调谐器具有数据分析之前,使用前端脚本和数据库数天。 运行它一个新的服务器将只提供最少的信息和调整选项。 我们发现它伟大的使用调谐器脚本每隔几天两个星期才能看到它会拿出,并在年底我们已经显著提高数据库的性能有什么建议。
9.不要害怕问与SQL工作可能是具有挑战性的开始,并具有非常大的数据集工作只使它更加艰难。 不要害怕去,谁知道他们在做什么,当涉及到大型数据集的专业人士。 最终,你会最终有一个卓越的产品,更快的发展,更快的前端性能。 当涉及到大型数据库有时是需要经验丰富的专业人士眼中,找出所有可能减缓你的数据库性能的小告诫。
Answer 9:
导航到C:\ wamp64 \别名\ phpmyadmin.conf和变化:
php_admin_value upload_max_filesize 128M
php_admin_value post_max_size 128M
至
php_admin_value upload_max_filesize 2048M
php_admin_value post_max_size 2048M
或者更多 :)
Answer 10:
根据MySQL文档没有这些作品的! 人们的关注! 因此,我们将上传TEST.SQL到TEST_DB型到这个壳:
MySQL的--user = USER_NAME --password =你的密码TEST_DB <d:/test.sql
这个作品肯定的!
谢谢。
Answer 11:
你需要
- 从下载Bigdump脚本bigdump.php
- 转储通过phpMyAdmin的或其它工具创建数据库的文件,让dump.sql调用它。 您也可以使用gzip压缩转储文件,让我们把它叫做dump.gz.
- 访问帐户你的MySQL数据库
- 安装使用PHP一些Web服务器访问帐户。 该Web服务器必须能够连接到MySQL数据库。 这种能力是可能存在,如果你的Web服务器和MySQL服务器都来自同一ISP。
- 一些好的文本编辑器如记事本++编辑配置文件。
- 一些FTP客户端将文件上传到Web服务器。
- 关于文件,PHP,MySQL数据库,phpMyAdmin的,FTP和常识HTTP