日期:2011-05-02 15:44:00 来源:本站整理
MySQL数据导入与导出之二[MySQL防范]
本文“MySQL数据导入与导出之二[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
目前利用MySQL的越来越多了,我也用它做了自已的留言板.在利用历程中,渐渐地就要求对它的管理
功效需求近一步的掌握,不但是我,也是很多网友的要求.目前有一些问题是关于若何从MySQL中导出数据,
以便用在本地或别的的数据库系统之上;以及将现有数据导入MySQL数据库中.目前就我学习的情形,就这
两个问题作一下小结,内容不是很具体.其实MySQL的手册是很具体的,只不过我把有关这两方面的东西提
取出来,加上了一点自已的理解,更具体的请参考数据库的呼应章节.
数据导出
数据导出主要有以下几种办法:
利用select into outfile 'filename'语句
利用mysqldump实用程序
利用select into outfile 'filename'语句
可以在mysql的号令行下或在PHP程序中履行它.我下面以在mysql号令行下为例.在php中利用时,将其
改成呼应的查询举行处理便可.不过在利用这个号令时,要求用户拥有file的权限.如我们有一个库为
phptest,此中有一个表为driver.目前要把driver卸成文件.履行号令:
mysql> use phptest;
Database Changed
mysql> select * from driver into outfile 'a.txt';
Query OK, 22 rows affected (0.05 sec)
上面便可以完成将表driver从数据库中卸到a.txt文件中.注意文件名要加单引号.那么这个文件在哪
呢?在mysql目录下有一个data目录,它便是数据库文件所放的地方.每个库在单独占一个子目录,所以
phptest的目录为c:mysqldataphptest(注意:我的mysql安装在c:mysql下).好,目前我们进去,a.txt
就是它.翻开这个文件,大概是:
1 Mika Hakinnen 1
2 David Coulthard 1
3 Michael SchuMacher 2
4 Rubens Barrichello 2
...
大概还有很多记录.每个字段之间是用制表符脱离的(t).那么我们可以改正输出文件名的目录,以便
放在指定的位置.如'a.txt'可以改成'./a.txt'或'/a.txt'.此中'./a.txt'放在c:mysqldata目录下了,
而'/a.txt'文件则放在c:目录下了.所以select号令认为的当前目录是数据库的存放目录,这里是
c:mysqldata.
利用select号令还可以指定卸出文件时,字段之间的脱离字符,转义字符,包含字符,及记录行脱离字
符.列在下面:
FIELDS
TERMINATED BY 't'
[OPTIONALLY] ENCLOSED BY ''
ESCAPED BY '\'
LINES
TERMINATED BY 'n'
TERMINATED 表示字段脱离
[OPTIONALLY] ENCLOSED 表示字段用什么字符包含起来,假如利用了OPTIONALLY则只有CHAR和VERCHAR
被包含
ESCAPED 表示当需求转义时用什么作为转义字符
LINES TERMINATED 表示每行记录之间用什么脱离
上面列的是缺省值,并且这些项都是可选的,不选则利用缺省值.可以按照需求举行改正.给出一个例
子以下:
mysql> select * from driver into outfile 'a.txt' fields terminated by ',' enclosed by '"';
Query OK, 22 rows affected (0.06 sec)
后果大概以下:
"1","Mika","Hakinnen","1"
"2","David","Coulthard","1"
"3","Michael","Schumacher","2"
"4","Rubens","Barrichello","2"
...
可以看到每个字段都用','举行了脱离,且每个字段都用'"'包含了起来.注意,行记录脱离符可以是
一个字符串,请大家自行测试.不过,假如输出文件在指定目录下假如存在的话就会报错,先删除再测
试便可.
利用mysqldump实用程序
从上面的select办法可以看出,输出的文件只有数据,而没有表构造.并且,一次只能处理一个表,要
处理多个表则不是很简单的.不过可以将select号令写入一个sql 文件(复制文本应当是很简单的吧),然
后在号令行下履行便可:mysql 库名的号令),也可以卸出纯数据文本或只卸出含有成立表构造而没有数据的sql 文件,同时可以对库中的多个
表举行操作,比select的办法可机动,强盛的多,倡议利用.下面就具体阐明.
先来个最简单的吧:
mysqldump phptest > a.sql
大概后果以下:
# MySQL dump 7.1
#
# Host: localhost Database: phptest
#--------------------------------------------------------
# Server version 3.22.32-shareware-debug
#
# Table structure for table 'driver'
#
CREATE TABLE driver (
drv_id int(11) DEFAULT '0' NOT NULL auto_increment,
drv_forename varchar(15) DEFAULT '' NOT NULL,
drv_surname varchar(25) DEFAULT '' NOT NULL,
drv_team int(11) DEFAULT '0' NOT NULL,
PRIMARY KEY (drv_id)
);
#
# Dumping data for table 'driver'
#
INSERT INTO driver VALUES (1,'Mika','Hakinnen',1);
INSERT INTO driver VALUES (2,'David','Coulthard',1);
INSERT INTO driver VALUES (3,'Michael','Schumacher',2);
INSERT INTO driver VALUES (4,'Rubens','Barrichello',2);
...
假若有多表,则辨别列在下面.可以看到这个文件是一个完好的sql文件,假如要将其导入到别的的数
据库中可以通过号令行方法,很便利:mysql phptest < a.sql.假如将数据从本地传到服务器上,则可以
将这个文件上传,然后在服务器通过号令行方法装入数据.
假如只想卸出建表指令,则号令以下:
mysqldump -d phptest > a.sql
假如只想卸出插入数据的sql号令,而不需求建表号令,则号令以下:
mysqldump -t phptest > a.sql
那么假如我只想要数据,而不想要什么sql号令时,应当若何操作呢?
mysqldump -T./ phptest driver
此中,只有指定了-T参数才可以卸出纯文本文件,表示卸出数据的目录,./表示当前目录,即与
mysqldump同一目录.假如不指定driver表,则将卸出整个数据库的数据.每个表会生成两个文件,一个为
.sql文件,包含建表履行.另一个为.txt文件,只包含数据,且没有sql指令.
对卸出的数据文件,也可以同select办法一样,指定字段脱离符,包含字符,转义字段,行记录脱离符.
参数列在下面:
--fields-terminated-by= 字段脱离符
--fields-enclosed-by= 字段包含符
--fields-optionally-enclosed-by= 字段包含符,只用在CHAR和VERCHAR字段上
--fields-escaped-by= 转义字符
--lines-terminated-by= 行记录脱离符
我想大家应当懂得这些参数的意思了吧.一个例子以下:
mysqldump -T./ --fields-terminated-by=, --fields-enclosed-by=" phptest driver
输出后果为:
"1","Mika","Hakinnen","1"
"2","David","Coulthard","1"
"3","Michael","Schumacher","2"
"4","Rubens","Barrichello","2"
...
请注意字符的利用.
小结
以上为利用select和mysqldump实用程序来卸出文本的办法.select合适操纵程序举行处理,而mysqldump
则为手工操作,同时供应强盛的导出功效,并且可以处理整个库,或库中指定的多表.大家可以按照需求自
行决意利用.
同时还有一些办法,如直接数据库文件拷贝也可以,但是移动后的数据库系统与原系统应一致才行.这
里就不再提了.
导入
同导出相近似,导入也有两种办法:
利用LOAD DATA INFILE 'filename'号令
利用mysqlimport实用程序
由于这两个处理与导出参数类似,只不过是它们的逆操作,故只给出几种号令利用的例子,不再注释了,
大家可以自行查阅手册.
利用load号令:
load data infile 'driver.txt' into table driver fields terminated by ',' enclosed by '"';
利用mysqlimport实用程序:
mysqlimport --fields-terminated-by=, --fields-enclosed-by=" phptest driver.txt
文章有不细致的地方,但愿大家参考手册. 以上是“MySQL数据导入与导出之二[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论