mysql 导入导出数据库以及函数、存储过程的介绍

mysql 导入导出数据库以及函数、存储过程的介绍,第1张

本篇文章是对mysql中的导入导出数据库命令以及函数存储过程进行了详细的分析介绍,需要的朋友参考下

mysql常用导出数据命令:

1.mysql导出整个数据库

mysqldump

-hhostname

-uusername

-ppassword

databasename

>

backupfile.sql

mysqldump

-hlocalhost

-uroot

hqgr>

hqgr.sql

(如果root用户没用密码可以不写-p,当然导出的sql文件你可以制定一个路径,未指定则存放在mysql的bin目录下)

2.mysql导出数据库一个表

mysqldump

-hhostname

-uusername

-ppassword

database

tablename>

导出的文件名

mysqldump

-hlocalhost

-uroot

hqgr

t_ug_user>

user.sql

3.mysql导出一个数据库结构

 mysqldump

-hhostname

-uusername

-ppassword

-d

--add-drop-table

databasename>d:hqgrstructure.sql

-d

没有数据

--add-drop-table

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

table

4.如果需要导出mysql里面的函数或者存储过程

mysqldump

-hhostname

-uusername

-ppassword

-ntd

-R

databasename

>

backupflie.sql

mysqldump

-hlocalhost

-uroot

-ntd

-R

hqgr

>

hqgr.sql

其中的

-ntd

是表示导出存储过程;-R是表示导出函数

mysql常用导入数据的命令:

1.mysql命令

mysql

-hhostname

-uusername

-

ppassword

databasename

<

backupfile.sql

2.source命令

mysql>source

backupfile.sql

php调用mysql存储过程和函数的方法

存储过程和函数是MySql5.0刚刚引入的。关于这方面的 *** 作在PHP里面没有直接的支持。但是由于Mysql PHP API的设计,使得我们可以在以前的PHP版本中的mysql php api中支持存储过程和函数的调用。

在php中调用存储过程和函数。

1。调用存储过程的方法。

a。如果存储过程有 IN/INOUT参数,声明一个变量,输入参数给存储过程,该变量是一对,

一个php变量(也可以不必,只是没有php变量时,没有办法进行动态输入),一个Mysql

变量。

b。如果存储过程有OUT变量,声明一个Mysql变量。

mysql变量的声明比较特殊,必须让mysql服务器知道此变量的存在,其实也就是执行一条mysql语句。

入set @mysqlvar=$phpvar

c。使用mysql_query()/mysql_db_query()执行mysql 变量声明语句。

mysql_query("set @mysqlvar=$pbpvar")

这样,在mysql服务器里面就有一个变量,@mysqlar。如果是IN参数,那么其值可以由phpar传入。

d。 如果是存储过程。

1。执行 call procedure()语句。

也就是mysql_query("call proceduer([var1]...)")

2. 如果有返回值,执行select @ar,返回执行结果。

mysql_query("select @var)"

接下来的 *** 作就和php执行一般的mysql语句一样了。可以通过mydql_fetch_row()等函数获得结果。

如果时函数。 直接执行 select function() 就可以了。

$host="localhost"

$user="root"

$password="11212"

$db="samp_db"

$dblink=mysql_connect($host,$user,$password)

or die("can't connect to mysql")

mysql_select_db($db,$dblink)

or die("can't select samp_db")

$res=mysql_query("set @a=$password",$dblink)

$res=mysql_query("call aa(@a)",$dblink)

$res=mysql_query("select @a",$dblink)

$row=mysql_fetch_row($res)

echo $row[0]

从存储过程返回表类型的值也有二种:1.存储过程使用浮标参数,即同时指定CURSOR VARYING OUTPUT项.调用者可以使用while及fetch循环遍历该浮标.2.直接将存储过程返回的结果集插入到表中,即使用insert into 表名 exec 存储过程.此种方式中注意存储过程返回的结果集列与insert的列要完全对应,可以在insert中指定列名来保证对应关系.------------------------------------------------------------------------------测试:----------------------------------------------------------------------------------建立测试用的临时表create table #tmp (colx int,coly int)insert into #tmp values(1,2)insert into #tmp values(2,3)insert into #tmp values(3,4)select * from #tmpGO----创建返回游标的存储过程create proc sp_c @cur CURSOR VARYING OUTPUTASbeginset @cur = CURSOR for select colx from #tmpopen @cur /*该过程返回游标,该游标为colx列的查询结果*/endGO----创建返回表的存储过程create proc sp_dasselect coly from #tmp /*该过程返回coly列的查询结果*/go----创建用于调用以上二个存储过程的存储过程create proc sp_easbegindeclare @x intdeclare @cur cursor----接收游标,并遍历游标EXEC sp_c @cur OUTPUTfetch next from @cur into @xwhile (@@FETCH_STATUS = 0)beginprint @xfetch next from @cur into @xENDclose @curdeallocate @cur----将存储过程返回的列值再重新插入源表中insert into #tmp(coly) EXEC sp_dselect * from #tmpendGOEXEC sp_edrop proc sp_cdrop proc sp_d


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7328426.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存