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

lijianjun08 2010-08-03 09:42:29
我从phpmyadmin里导出了个.sql文件 我想用这个文件还原到另一个数据库 请问哪位大虾能告诉我在php代码里如何写吗
...全文
280 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
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);

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧