我从phpmyadmin里导出了个.sql文件 我想用这个文件还原到另一个数据库 请问哪位大虾能告诉我在php代码里如何写吗

解决方案 »

  1.   

    $sql = file_get_contents("your.sql");
    然后用mysql_query执行
    mysql_query($sql);
      

  2.   

    mysql_query一次只能执行一条语句.
    你要一行一行的读取并执行.
    读取到一行的sql后,判断当前行的第一个字符是否为#,是则跳过,读取下一行,否则执行.
      

  3.   

    -- phpMyAdmin SQL Dump
    -- version 3.1.1
    -- http://www.phpmyadmin.net
    --
    -- 主机: localhost
    -- 生成日期: 2010 年 07 月 30 日 03:12
    -- 服务器版本: 5.1.30
    -- PHP 版本: 5.2.8SET 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`, 全是这样的东西没有#
      

  4.   

    直接进入phpmyadmin,进入数据库,执行sql语句,然后都复制进去以后执行不就好拉
      

  5.   


    <?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;
    } }
    }
    ?>
      

  6.   

    $filename是要导入的sql文件的物理路径
    $db是一个mysql类。你可以换成你自己的
    $charset是要导入的数据库字符编码
      

  7.   

    我知道,这个函数可以用的。
    不是还有if(eregi("\;$",$value)){你直接用就可以了。