仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 945|回复: 19
打印 上一主题 下一主题

[学习教程] PHP网页编程之MySQL数据导入与导出 [转]

[复制链接]
简单生活 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:18:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-20 21:30

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表