如何用.sql文件还原数据库

lijianjun08 2010-08-03 09:42:29
我从phpmyadmin里导出了个.sql文件 我想用这个文件还原到另一个数据库 请问哪位大虾能告诉我在php代码里如何写吗
...全文
136 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Dleno 2010-08-04
$filename是要导入的sql文件的物理路径
$db是一个mysql类。你可以换成你自己的
$charset是要导入的数据库字符编码
回复
Dleno 2010-08-04

<?php
function bakindata($filename) {
global $db,$charset;
$sql=file($filename);
$query='';
$num=0;
foreach($sql as $key => $value){
$value=trim($value);
if(!$value || $value[0]=='#') continue;
if(eregi("\;$",$value)){
$query.=$value;
if(eregi("^CREATE",$query)){
$extra = substr(strrchr($query,')'),1);
$query = str_replace($extra,'',$query);
if($db->server_info() > '4.1'){
$extra = $charset ? "ENGINE=MyISAM DEFAULT CHARSET=$charset;" : "ENGINE=MyISAM;";
}else{
$extra = "TYPE=MyISAM;";
}
$query .= $extra;
}elseif(eregi("^INSERT",$query)){
$query='REPLACE '.substr($query,6);
}
$db->query($query);
$query='';
} else{
$query.=$value;
}

}
}
?>
回复
一只老菜鸟 2010-08-04
直接进入phpmyadmin,进入数据库,执行sql语句,然后都复制进去以后执行不就好拉
回复
Dleno 2010-08-04
[Quote=引用 7 楼 lijianjun08 的回复:]

不行 没有#
[/Quote]
我知道,这个函数可以用的。
不是还有if(eregi("\;$",$value)){

你直接用就可以了。
回复
lijianjun08 2010-08-04
不行 没有#
回复
lijianjun08 2010-08-03
-- phpMyAdmin SQL Dump
-- version 3.1.1
-- http://www.phpmyadmin.net
--
-- 主机: localhost
-- 生成日期: 2010 年 07 月 30 日 03:12
-- 服务器版本: 5.1.30
-- PHP 版本: 5.2.8

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- 数据库: `osc`
--

-- --------------------------------------------------------

--
-- 表的结构 `ebw_address_book`
--

CREATE TABLE IF NOT EXISTS `ebw_address_book` (
`address_book_id` int(11) NOT NULL AUTO_INCREMENT,
`customers_id` int(11) NOT NULL,
`entry_gender` char(1) NOT NULL,
`entry_company` varchar(255) DEFAULT NULL,
`entry_firstname` varchar(255) NOT NULL,
`entry_lastname` varchar(255) NOT NULL,
`entry_street_address` varchar(255) NOT NULL,
`entry_suburb` varchar(255) DEFAULT NULL,
`entry_postcode` varchar(255) NOT NULL,
`entry_city` varchar(255) NOT NULL,
`entry_state` varchar(255) DEFAULT NULL,
`entry_country_id` int(11) NOT NULL DEFAULT '0',
`entry_zone_id` int(11) NOT NULL DEFAULT '0',
`entry_telephone` varchar(255) DEFAULT NULL,
`entry_fax` varchar(255) DEFAULT NULL,
PRIMARY KEY (`address_book_id`),
KEY `idx_address_book_customers_id` (`customers_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

--
-- 导出表中的数据 `ebw_address_book`
--

INSERT INTO `ebw_address_book` (`address_book_id`, `customers_id`, `entry_gender`, `entry_company`, `entry_firstname`, `entry_lastname`, `entry_street_address`, `entry_suburb`, `entry_postcode`,







全是这样的东西没有#
回复
Dleno 2010-08-03
mysql_query一次只能执行一条语句.
你要一行一行的读取并执行.
读取到一行的sql后,判断当前行的第一个字符是否为#,是则跳过,读取下一行,否则执行.
回复
CunningBoy 2010-08-03
$sql = file_get_contents("your.sql");
然后用mysql_query执行
mysql_query($sql);
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告