仓酷云

标题: PHP网页编程之MySQL数据导入与导出 [转] [打印本页]

作者: 简单生活    时间: 2015-2-4 00:18
标题: PHP网页编程之MySQL数据导入与导出 [转]
HTML中的任何元素都要亲自实践,只有明白了什么元素会起到什么效果之后,你才会记忆深刻,而一味的啃书,绝对是不行的,我想大部分新手之所以觉得概念难学,大部分是一个字“懒”,懒是阻止进步的最大敌人,所以克服掉懒的习惯,才能更快的学好一样东西。mysql|数据   小木学编程 之 MySQL数据导入与导出
作者:limodou

  如今利用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:\mysql\data\phptest(注重:我的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:\mysql\data目次下了,
而'/a.txt'文件则放在c:\目次下了。所以select号令以为确当前目次是数据库的寄存目次,这里是
c:\mysql\data。

  利用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 库名<a.sql。而利用mysqldump可以卸出sql文件格局信息(即,内容为sql
的号令),也能够卸出纯数据文本或只卸出含有创立表布局而没无数据的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适用法式
利用sql文件
  因为前两个处置与导出处置类似,只不外是它们的逆操作,故只给出几种号令利用的例子,不再注释了,
人人可以自行查阅手册。

  利用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

  关于第三种,则可使用由mysqldump导出的sql文件,在号令行下履行mysql 库名<sql文件便可,不再细
说了。

  文章有不详实的中央,但愿人人参考手册。




  PHP成功的插入,删除,更新数据的时候,显然,你已经距离成功指日可待了。
作者: 不帅    时间: 2015-2-4 11:26
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
作者: 第二个灵魂    时间: 2015-2-4 11:26
Ps:以上纯属原创,如有雷同,纯属巧合
作者: 若天明    时间: 2015-2-9 22:21
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
作者: 飘灵儿    时间: 2015-2-13 07:54
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
作者: 只想知道    时间: 2015-3-3 17:36
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
作者: 冷月葬花魂    时间: 2015-3-7 14:15
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
作者: 飘飘悠悠    时间: 2015-3-10 19:06
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
作者: 蒙在股里    时间: 2015-3-17 09:10
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
作者: 再现理想    时间: 2015-3-18 19:36
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
作者: 再见西城    时间: 2015-3-24 18:51
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
作者: 莫相离    时间: 2015-3-27 00:53
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
作者: admin    时间: 2015-4-1 04:11
实践是检验自己会不会的真理。
作者: 若相依    时间: 2015-4-6 21:56
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
作者: 乐观    时间: 2015-4-11 21:48
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
作者: 金色的骷髅    时间: 2015-4-16 10:11
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
作者: 柔情似水    时间: 2015-4-29 18:16
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
作者: 分手快乐    时间: 2015-5-6 00:09
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
作者: 老尸    时间: 2015-5-10 23:50
做为1门年轻的语言,php一直很努力。
作者: 爱飞    时间: 2015-5-12 11:06
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2