怎么样mysql 大量数据导出导入
这么大的量,最好不要用PHP来写,用mysql.exe进行交互式命令,通过文本文件来进行,大概的过程如下:
导出:
set names latin1;
select * into outfile 'article.txt' from article.newarticle;
导入:
set names utf-8;
load data infile 'article.txt' into table fansi.article;
导出的旧表生成文本文件article.txt,可能在MYSQL的DATA文件夹下,然后用记事本打开另存为UTF8格式,然后就可以用导入语句导入到新表中,这样做的好处是无论多大的表都支持。
在mysql中导入/导出超大的sql文本文件,我们可以使用很多方法实例,如有:客户端直接命令操作,分块导入,客户端用source命令操作等等。
在实际工作中,有时经常地时行mysql数据库的导入和导入操作,但对于大型sql文件导入时,phpmyadmin是不行的,有太多限制,比如记录,内存等!
多种方案收集,如下:
方案一:客户端直接命令操作(此方法是我比较喜欢的)
刚恢复一个电商网站mysql备份数据,此备份文件有300多M,因为phpmyadmin支持上传有限,文件太大IE停止响应,所以在本地用
代码如下
复制代码
mysql -u root -p root jiahuibuydb<
c:/yebihai.sql
但没导入进去,出来一大堆mysql的参数提示,不认输入的命令参数,后来写成下面这个样子,就是去掉了参数和数据之间的空格
代码如下
复制代码
mysql -uroot -proot jiahuibuydb<
c:/yebihai.sql
导入就OK了
导出命令:
a)导出整个库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
备份一个数据库: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";
system($command);
echo "success";
************************************************
备份MySQL数据库的命令
mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql
备份MySQL数据库为带删除表的格式
备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。
mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql
直接将MySQL数据库压缩备份
mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz
备份MySQL数据库某个(些)表
mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql
同时备份多个MySQL数据库
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数据库的命令
mysql -hhostname -uusername -ppassword databasename < backupfile.sql
还原压缩的MySQL数据库
gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename
将数据库转移到新服务器
mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename
几个常用用例:
1.导出整个数据库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u root -p dataname >dataname.sql
这个时候会提示要你输入root用户名的密码,输入密码后dataname数据库就成功备份在mysql/bin/目录中.
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u root -p dataname users> dataname_users.sql
3.导出一个数据库结构
mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc >d:\wcnc_db.sql
-d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table
4.导入数据库
常用source 命令
进入mysql数据库控制台,
如mysql -u root -p
mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source d:\wcnc_db.sql
mysqldump支持下列选项:
–add-locks
在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。
–add-drop-table
在每个create语句之前增加一个drop table。
–allow-keywords
允许创建是关键词的列名字。这由表名前缀于每个列名做到。
-c, –complete-insert
使用完整的insert语句(用列名字)。
-C, –compress
如果客户和服务器均支持压缩,压缩两者间所有的信息。
–delayed
用Insert DELAYED命令插入行。
-e, –extended-insert
使用全新多行Insert语法。(给出更紧缩并且更快的插入语句)
-#, –debug[=option_string]
跟踪程序的使用(为了调试)。
–help
显示一条帮助消息并且退出。
–fields-terminated-by=…
–fields-enclosed-by=…
–fields-optionally-enclosed-by=…
–fields-escaped-by=…
–fields-terminated-by=…
这些选择与-T选择一起使用,并且有相应的LOAD DATA INFILE子句相同的含义。
LOAD DATA INFILE语法。
-F, –flush-logs
在开始导出前,洗掉在MySQL服务器中的日志文件。
-f, –force,
即使我们在一个表导出期间得到一个SQL错误,继续。
-h, –host=..
从命名的主机上的MySQL服务器导出数据。缺省主机是localhost。
-l, –lock-tables.
为开始导出锁定所有表。
-t, –no-create-info
不写入表创建信息(Create TABLE语句)
-d, –no-data
不写入表的任何行信息。如果你只想得到一个表的结构的导出,这是很有用的!
–opt
同–quick –add-drop-table –add-locks –extended-insert –lock-tables。
应该给你为读入一个MySQL服务器的尽可能最快的导出。
-pyour_pass, –password[=your_pass]
与服务器连接时使用的口令。如果你不指定“=your_pass”部分,mysqldump需要来自终端的口令。
-P port_num, –port=port_num
与一台主机连接时使用的TCP/IP端口号。(这用于连接到localhost以外的主机,因为它使用 Unix套接字。)
-q, –quick
不缓冲查询,直接导出至stdout;使用mysql_use_result()做它。
-S /path/to/socket, –socket=/path/to/socket
与localhost连接时(它是缺省主机)使用的套接字文件。
-T, –tab=path-to-some-directory
对于每个给定的表,创建一个table_name.sql文件,它包含SQL
Create
命令,和一个table_name.txt文件,它包含数据。注意:这只有在mysqldump运行在mysqld守护进程运行的同一台机器上的时候才工作。.txt文件的格式根据–fields-xxx和
–lines–xxx选项来定。
-u user_name, –user=user_name
与服务器连接时,MySQL使用的用户名。缺省值是你的Unix登录名。
-O var=option, –set-variable var=option
设置一个变量的值。可能的变量被列在下面。
-v, –verbose
冗长模式。打印出程序所做的更多的信息。
-V, –version
打印版本信息并且退出。
-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
就是
shell> mysql 库名 < 文件名
文炭仙乐: 在mysql中导入/导出超大的sql文本文件,我们可以使用很多方法实例,如有:客户端直接命令操作,分块导入,客户端用source命令操作等等. 在实际工作中,有时经常地时行mysql数据库的导入和导入操作,但对于大型sql文件导入时,...
浈江区17815228066: mysql 数据库导出和导入 - ?
文炭仙乐: MySQL命令行导出数据库:1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录 如我输入的命令行:cd C:\Program Files\MySQL\MySQL Server 4.1\bin(或者直接将windows的环境变量path中添加该目录)2,导出数...
浈江区17815228066: 怎么快速导入一个超大的mysql文件 - ?
文炭仙乐: 1、首先已管理员身份(通过win+r)进入命令提示符2、先进入MYSQL安装目录,以我的为例:d:/wamp/bin/mysql/mysql5.5.20/bin 进入该目录的bin目录下,该目录下有个mysql.exe 文件 mysql 导入超大文件到数据库 - queen - 安然3、为了保证一...
浈江区17815228066: 怎么提取MYSQL数据库的所有数据到另一个MYSQL数据库 - ?
文炭仙乐: 一、导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):1、导出数据和表结构:mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql#/usr/local/mysql/bin/ mysqldump -uroot -p abc > abc.sql 敲回车后会提示输入密码2、只...
浈江区17815228066: 怎样将MySQL数据库结构和数据导出或导入 - ?
文炭仙乐: 在使用MySQL时,有时需要从数据库中导出数据,以便用在本地或其它的数据库系统之上,或者将现有数据导入MySQL数据库中.做MySQL数据库的结构和数据的导出和导入.要用到MySQL的mysqldump工具,基本用法是: shell> ...
浈江区17815228066: 如何导出和导入mysql数据 - ?
文炭仙乐: 导出数据库:打开Navicat ,在我们要到处的数据上面右击鼠标,然后弹出的快捷菜单上点击“转储SQL 文件”,在再次弹出的子菜单项中选择第一个“数据跟结构”.然后,在会弹出一个选择保存位置的保存框,选择好位置后,点确定,就OK了 导入数据库:打开Navicat for MySQL,然后点击右键选择新建数据库,名字跟我们要导入的数据的名字一样 点击确定后,我们就可以见到左边出现刚刚我们建立好的数据了,然后右击选择“运行SQL文件”会弹出一个框,点击“...”选择文件所在的路径,点击开始,文件就会导入成功!
浈江区17815228066: 大文件导入 MYSQL,如何最快速 - ?
文炭仙乐: 一般的数据备份用 :mysql路径+bin/mysqldump -u 用户名 -p 数据库名 > 导出的文件名 数据还原是:到mysql命令行下面,用:source 文件名;的方法.但是这种方法对大数据量的表进行操作就非常慢.因为他不仅导出了数据还导出了表结构....
浈江区17815228066: MYSQL如何导入/导出数据??
文炭仙乐: 从文本文件导入:load data infile '文件名' into table导出到文本文件:select * into outfile '文件名' from table具体可参考MySQL的说明文件另:MySQL Manager也有导入导出工具,且可以有多种格式.
浈江区17815228066: 如何将mysql数据库中某表某字段的数据批量导入到另外一个数据库指定表指定字段中 - ?
文炭仙乐: 先把 A 库的表导出来,mysqldump a a_1 > a_1.sql再导入到B库里 mysql b
浈江区17815228066: 怎么从mysql 导出整个数据 - ?
文炭仙乐: 在命令行下mysql的数据导出有个很好用命令mysqldump,它的参数有一大把,可以这样查看: mysqldump 最常用的: mysqldump -uroot -pmysql databasefoo table1 table2 > foo.sql 这样就可以将数据库databasefoo的表table1,table2以sql形式导...