您当前的位置:首页 > 互联网教程

如何导入MySQL数据库

发布时间:2025-05-13 04:23:36    发布人:远客网络

如何导入MySQL数据库

一、如何导入MySQL数据库

解决方案 1.概述MySQL数据库的导入,有两种方法:1)先导出数据库SQL脚本,再导入;2)直接拷贝数据库目录和文件。

在不同操作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况发生。所以一般推荐用SQL脚本形式导入。下面分别介绍两种方法。

2.方法一 SQL脚本形式操作步骤如下:2.1.导出SQL脚本在原数据库服务器上,可以用phpMyAdmin工具,或者mysqldump命令行,导出SQL脚本。2.1.1用phpMyAdmin工具导出选项中,选择导出“结构”和“数据”,不要添加“DROP DATABASE”和“DROP TABLE”选项。选中“另存为文件”选项,如果数据比较多,可以选中“gzipped”选项。将导出的SQL文件保存下来。

2.1.2用mysqldump命令行命令格式mysqldump-u用户名-p数据库名>数据库名.sql范例:mysqldump-uroot-p abc> abc.sql(导出数据库abc到abc.sql文件)

提示输入密码时,输入该数据库用户名的密码。

2.2.创建空的数据库通过主控界面/控制面板,创建一个数据库。假设数据库名为abc,数据库全权用户为abc_f。

2.3.将SQL脚本导入执行同样是两种方法,一种用phpMyAdmin(mysql数据库管理)工具,或者mysql命令行。2.3.1用phpMyAdmin工具从控制面板,选择创建的空数据库,点“管理”,进入管理工具页面。在"SQL"菜单中,浏览选择刚才导出的SQL文件,点击“执行”以上载并执行。

注意:phpMyAdmin对上载的文件大小有限制,php本身对上载文件大小也有限制,如果原始sql文件比较大,可以先用gzip对它进行压缩,对于sql文件这样的文本文件,可获得1:5或更高的压缩率。gzip使用方法:# gzip xxxxx.sql得到xxxxx.sql.gz文件。

提示输入密码时,输入该数据库用户名的密码。

3直接拷贝如果数据库比较大,可以考虑用直接拷贝的方法,但不同版本和操作系统之间可能不兼容,要慎用。3.1准备原始文件用tar打包为一个文件

3.3解压在临时目录中解压,如:cd/tmptar zxf mydb.tar.gz

3.4拷贝将解压后的数据库文件拷贝到相关目录cd mydb/cp*/var/lib/mysql/mydb/

对于FreeBSD:cp*/var/db/mysql/mydb/

3.5权限设置将拷贝过去的文件的属主改为mysql:mysql,权限改为660chown mysql:mysql/var/lib/mysql/mydb/*chmod 660/var/lib/mysql/mydb/*

标签:命令行比较格式脚本sql脚本步骤版本数据库文件roo

二、如何使用mysqldump命令备份mysql数据库

通用规律只有使用--all-databases(-A)会 ERROR 1356,那就看看他到底备份了什么东西。于是喊上同事一起 less看了下,上下扫了两眼。突然发现:1.备份 SQL文件里 DROP掉了 mysql.proc;2.后CREATE了一个新的 mysql.proc;3. LOCK TABLES和 UNLOCK TABLES中间居然没有备份 CREATE ROUTINE任何数据?这不就是相当于每次导入全备都给我一个没有任何 sys schema routines的全新 mysql.proc表?那这不就异常的尴尬?

---- Table structure for table `proc`--

---- Dumping data for table `proc`-

真相大白在官方文档【sys-schema-usage】官方文档明确的告诉我们不会备份 sys库。但在使用 mysqldump在执行--all-databases会清空 mysql.proc导致 sys无法正常使用;这是一个 BUG,并且只存在于 MySQL 5.7.x!

1、mysql_upgrade install or upgrade sys schema

这个方案适用于 sys库已经因为 mysqldump导入而损坏的情况下使用。

注意:mysql_upgrade在修理 sys库的同时,还修理 mysql库和用户库表(期间加锁且速度一般),有极小可能会误伤;使用 mysql_upgrade的时候要加上--upgrade-system-tables,不然会扫描用户库表。

这个方案适用于需要还原的数据库,sys库也不太正常的情况下使用;在全备后额外再备份一份 sys库用于修复。

注意:不适用于做主从时使用它。

这个方案适用于所有场景的全备需求,100%安全。

如果你的数据库 sys全部中招了,又是生产库。那你只能用这个方法;

mysql-sys:

中记录了 sys库的创建语句将文件下载到本地,然后根据数据库版本,执行以下命令即可。

三、怎么样mysql 大量数据导出导入

还原一个数据库:mysql-h localhost-u root-p123456 www<c:\www.sql

备份一个数据库:mysqldump-h localhost-u root-p123456 www> d:\www2008-2-26.sql

//$command="mysqldump--opt-h$dbhost-u$dbuser-p$dbpass$dbname| gzip>$backupFile";

$command="mysqldump-h localhost-u root-p123456 guestbook> guestbook2-29.sql";

************************************************

mysqldump-hhostname-uusername-ppassword databasename> backupfile.sql

备份MySQL数据库为带删除表的格式

备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。

mysqldump-–add-drop-table-uusername-ppassword databasename> backupfile.sql

mysqldump-hhostname-uusername-ppassword databasename| gzip> backupfile.sql.gz

mysqldump-hhostname-uusername-ppassword databasename specific_table1 specific_table2> backupfile.sql

mysqldump-hhostname-uusername-ppassword–databases databasename1 databasename2 databasename3> multibackupfile.sql

mysqldump–no-data–databases databasename1 databasename2 databasename3> structurebackupfile.sql

mysqldump–all-databases> allbackupfile.sql

mysql-hhostname-uusername-ppassword databasename< backupfile.sql

gunzip< backupfile.sql.gz| mysql-uusername-ppassword databasename

mysqldump-uusername-ppassword databasename| mysql–host=*.*.*.*-C databasename

mysqldump-u用户名-p数据库名>导出的文件名

mysqldump-u root-p dataname>dataname.sql

这个时候会提示要你输入root用户名的密码,输入密码后dataname数据库就成功备份在mysql/bin/目录中.

mysqldump-u用户名-p数据库名表名>导出的文件名

mysqldump-u root-p dataname users> dataname_users.sql

mysqldump-u wcnc-p-d–add-drop-table smgp_apps_wcnc>d:\wcnc_db.sql

-d没有数据–add-drop-table在每个create语句之前增加一个drop table

然后使用source命令,后面参数为脚本文件(如这里用到的.sql)

mysql>source d:\wcnc_db.sql

在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。

在每个create语句之前增加一个drop table。

允许创建是关键词的列名字。这由表名前缀于每个列名做到。

使用完整的insert语句(用列名字)。

如果客户和服务器均支持压缩,压缩两者间所有的信息。

使用全新多行Insert语法。(给出更紧缩并且更快的插入语句)

–fields-optionally-enclosed-by=…

这些选择与-T选择一起使用,并且有相应的LOAD DATA INFILE子句相同的含义。

在开始导出前,洗掉在MySQL服务器中的日志文件。

即使我们在一个表导出期间得到一个SQL错误,继续。

从命名的主机上的MySQL服务器导出数据。缺省主机是localhost。

不写入表创建信息(Create TABLE语句)

不写入表的任何行信息。如果你只想得到一个表的结构的导出,这是很有用的!

同–quick–add-drop-table–add-locks–extended-insert–lock-tables。

应该给你为读入一个MySQL服务器的尽可能最快的导出。

-pyour_pass,–password[=your_pass]

与服务器连接时使用的口令。如果你不指定“=your_pass”部分,mysqldump需要来自终端的口令。

与一台主机连接时使用的TCP/IP端口号。(这用于连接到localhost以外的主机,因为它使用 Unix套接字。)

不缓冲查询,直接导出至stdout;使用mysql_use_result()做它。

-S/path/to/socket,–socket=/path/to/socket

与localhost连接时(它是缺省主机)使用的套接字文件。

-T,–tab=path-to-some-directory

对于每个给定的表,创建一个table_name.sql文件,它包含SQL

命令,和一个table_name.txt文件,它包含数据。注意:这只有在mysqldump运行在mysqld守护进程运行的同一台机器上的时候才工作。.txt文件的格式根据–fields-xxx和

与服务器连接时,MySQL使用的用户名。缺省值是你的Unix登录名。

-O var=option,–set-variable var=option

设置一个变量的值。可能的变量被列在下面。

冗长模式。打印出程序所做的更多的信息。

-w,–where='where-condition'

只导出被选择了的记录;注意引号是强制的!

“–where=user='jimf'”“-wuserid>1″“-wuserid<1″

最常见的mysqldump使用可能制作整个数据库的一个备份:

mysqldump–opt database> backup-file.sql

但是它对用来自于一个数据库的信息充实另外一个MySQL数据库也是有用的:

mysqldump–opt database| mysql–host=remote-host-C database

由于mysqldump导出的是完整的SQL语句,所以用mysql客户程序很容易就能把数据导入了:

shell> mysqladmin create target_db_name

shell> mysql target_db_name< backup-file.sql