php 导入.sql文件

1.初始化数据库的时候,如何把现有的.sql文件通过PHP 导入到MYSQL中?最好有这方面的代码,或者类。
2.PHP如何将excel 文件内容导入到Mysql相应的数据库中?
3.PHP如何对MYSQL数据库进行备份,生成.SQL文件放到制定的位置?
问题有点多,本人新手,实在不好意思。 
谢谢各位大哥帮忙~分不多,还有很多问题,这次给50分吧。

作者: sutianhua   发布时间: 2009-02-01

1、把现有的SQL文件导入数据库中,我写一段函数:
PHP code
<?php
$conn=mysql_connect("localhost","root","password");//指定数据库连接参数
function mysql_import($file,$database)//导入的函数,参数为SQL文件路径和导入的库名。
{
mysql_select_db($database);
mysql_query("source '".$file."';");
echo "导入".$file."文件到".$database."数据库完毕";
}
mysql_close($conn);
?>

作者: gingzai777   发布时间: 2009-02-01

引用楼主 sutianhua 的帖子:
1.初始化数据库的时候,如何把现有的.sql文件通过PHP 导入到MYSQL中?最好有这方面的代码,或者类。
2.PHP如何将excel 文件内容导入到Mysql相应的数据库中?
3.PHP如何对MYSQL数据库进行备份,生成.SQL文件放到制定的位置?
问题有点多,本人新手,实在不好意思。
谢谢各位大哥帮忙~分不多,还有很多问题,这次给50分吧。


第二个没有做过,关注此问题。
第三个问题:
最简单的,可以执行mysqldump命令。
PHP code
<?php
$mysqldump="";//MySQL目录bin目录下的mysqldump.exe的文件路径(最好是绝对路径),如果用的是linux,差不多也是这样
$database="";//备份的数据库名称
$user="";//数据库连接用户名
$password="";//数据库密码
$outputfile="";//导出的备份的SQL文件路径
system($mysqldump." -u".$user." -p".$password." ".$database." > ".$outputfile."");
?>

作者: gingzai777   发布时间: 2009-02-01

你的这些问题用mysql的客户端软件都可以实现,使用mysql cc 或者mysql front都可以实现你的要求,使用程序的话会非常麻烦

作者: hqaht   发布时间: 2009-02-01

执行不就可以了

或者google php mysql class

adobd lite

作者: iasky   发布时间: 2009-02-01

good

作者: xiongbing529   发布时间: 2009-02-01

对于1,3可以用mysql自带的命令行完成导入导出的工作.

假定mysql 用户名和密码为 root xxx,数据库为test
导入sql
mysql -hlocalhost -uroot -pxxx test < xxx.sql
导出sql
mysqldump -hlocalhost -uroot -pxxx database > xxx.sql

对于excel,标准的数据可以转成cvs格式的数据,然后再用phpmyadmin这样的工具导入

作者: jakey9826   发布时间: 2009-02-02

两种方法:
1.直接执行Mysql命令,让Mysql读取相应文件
2.用PHP读取文件,然后执行文件内容。

作者: froole   发布时间: 2009-02-02

1,3很简单

2. 
基本上在中文环境没有什么完美的解决方案
可以用DOM写个小程序做转换

作者: yctin   发布时间: 2009-02-02

是COM才对 =.=||

作者: yctin   发布时间: 2009-02-02

第二个问题,可以写一个csv文件导入就可以了
就可以把数据导入mysql数据库了

作者: chenna11113   发布时间: 2009-02-02

excel 出来那种 csv ... =_=||
数据简单还能用一下

作者: yctin   发布时间: 2009-02-02

支持下1。2楼的
2问题可以考虑mysql odbc 

作者: fxs_2008   发布时间: 2009-02-02

引用 7 楼 froole 的回复:
两种方法:
1.直接执行Mysql命令,让Mysql读取相应文件
2.用PHP读取文件,然后执行文件内容。

表达的简洁明了

作者: hqaht   发布时间: 2009-02-02

上面的积分都好高,汗。

作者: felix_lg   发布时间: 2009-02-02

第二个问题是这样的,要批量导入数据库一些文件,之前ASP做的时候是通过asp把.xls文件读出来,写进数据库。现在换成PHP,加上自己完全是个新手,想要做的是,把整理好的.xls文件通过PHP直接导入mysql,是不是这样不行的呀。那有啥好方法能实现批量导入呢?比如要导入一个学校所有学生的姓名学号之类的。

作者: sutianhua   发布时间: 2009-02-03

gingzai777 高手的方法正在试,是不是source 后面的地址必须是绝对地址呢?

作者: sutianhua   发布时间: 2009-02-03

引用 1 楼 gingzai777 的回复:
1、把现有的SQL文件导入数据库中,我写一段函数:

PHP code<?php
$conn=mysql_connect("localhost","root","password");//指定数据库连接参数
function mysql_import($file,$database)//导入的函数,参数为SQL文件路径和导入的库名。
{
mysql_select_db($database);
mysql_query("source '".$file."';");
echo "导入".$file."文件到".$database."数据库完毕";
}
mysql_close($conn);
?>


没成功,不知道错在什么地方。因为我太菜了。我把代码贴出来。大家看看帮帮忙哈。
+------------------------以下是我写的代码--------------------------------------------------------------------------+
function init_db(){
$file="../install/import.sql";
$conn=mysql_connect($this->dbhost,$this->dbuser,$this->dbpw) or die("数据库连接错误");
if(!$conn){
echo "数据库连接错误";
}
$db=mysql_select_db($this->dbname);
if($db){
mysql_query("DROP DATABASE `".$this->dbname."`");
}
mysql_query("setnames 'GBK'");
$creatdb=mysql_query("CREATE DATABASE `".$this->dbname."` DEFAULT CHARACTER SET gb2312 COLLATE gb2312_bin");//建立数据库
$mysql=mysql_select_db($this->dbname);
// if($mysql){
// echo "连接";
// }else{
// echo "未连接";
// }
// echo $file;
// $file="source '".$file."'";
// echo $file;
mysql_query("source '".$file."'");//初始化数据库
mysql_close($conn);

}

作者: sutianhua   发布时间: 2009-02-03

引用 17 楼 sutianhua 的回复:
引用 1 楼 gingzai777 的回复:
1、把现有的SQL文件导入数据库中,我写一段函数:

PHP code <?php
$conn=mysql_connect("localhost","root","password");//指定数据库连接参数
function mysql_import($file,$database)//导入的函数,参数为SQL文件路径和导入的库名。
{
mysql_select_db($database);
mysql_query("source '".$file."';");
echo "导入".$file."文件到".$database."数据库完毕";
}
mysql_close($conn);



用绝对路径试一下,不用相对路径。

作者: gingzai777   发布时间: 2009-02-03

引用 18 楼 gingzai777 的回复:
引用 17 楼 sutianhua 的回复:
引用 1 楼 gingzai777 的回复:
1、把现有的SQL文件导入数据库中,我写一段函数:

PHP code <?php
$conn=mysql_connect("localhost","root","password");//指定数据库连接参数
function mysql_import($file,$database)//导入的函数,参数为SQL文件路径和导入的库名。
{
mysql_select_db($database);
mysql_query("source '".$file."';");
echo "导入".$file."文件到".$database.…

试了,可惜没成功。我再试试

作者: sutianhua   发布时间: 2009-02-03

引用 19 楼 sutianhua 的回复:
引用 18 楼 gingzai777 的回复:
引用 17 楼 sutianhua 的回复:
引用 1 楼 gingzai777 的回复:
1、把现有的SQL文件导入数据库中,我写一段函数:

PHP code <?php
$conn=mysql_connect("localhost","root","password");//指定数据库连接参数
function mysql_import($file,$database)//导入的函数,参数为SQL文件路径和导入的库名。
{
mysql_select_db($database);
mysql_query("source '".$file."';");
echo "导入".$…
提示什么呢???

作者: gingzai777   发布时间: 2009-02-03

感谢大家,经过两天研究,才把第一个问题弄明白。这里严重感谢gingzai777 的指导!
最后我自己写了一个方法实现了,可能比较笨,大家要是有更好的希望也发出来。我的代码如下:(本身是一个类,我只截取了初始化数据库这个方法。)
+--------------------------------------------------------------------以下是代码-------------+

class install{
private $dbhost;
private $dbname;
private $dbpw;
private $dbuser;
//初始化类
function __construct($dbhost='',$dbname='',$dbpw='',$dbuser=''){
$this->dbhost=$dbhost;
$this->dbname=$dbname;
$this->dbpw=$dbpw;
$this->dbuser=$dbuser;
}

//初始化数据库
function init_db(){
$file="../install/import.sql";
$conn=mysql_connect($this->dbhost,$this->dbuser,$this->dbpw) or die("数据库连接错误");
$db=mysql_select_db($this->dbname);
if($db){
mysql_query("DROP DATABASE `".$this->dbname."`");
}
mysql_query("setnames 'GBK'");
$creatdb=mysql_query("CREATE DATABASE `".$this->dbname."` DEFAULT CHARACTER SET gb2312 COLLATE gb2312_bin");//建立数据库
$mysql=mysql_select_db($this->dbname);
$content=file($file); //转换为数组
foreach($content as $key=>$val){ //遍历,删除注释
$flag=substr($val,0,2); //去前两位字符
if($flag=="--"){ //判断是否为注释
$content[$key]=""; //删除
}
}
$content=implode("",$content); //转换为字符串
$content=trim($content);
$content=explode(";\n",$content); //转换为数组
foreach($content as $key=>$val){ //遍历执行
mysql_query($val);
}
}



}

作者: sutianhua   发布时间: 2009-02-03

学习

作者: fejay   发布时间: 2009-02-04

如过.sql文件还包含存储过程、函数等呢?

作者: gejun2008   发布时间: 2010-02-04

学习了

作者: wangerting1988   发布时间: 2011-03-29