文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>用PHP导出MySQL 数据库内容为.sql 文件

用PHP导出MySQL 数据库内容为.sql 文件

时间:2008-05-17  来源:剑心通明


通常我们都用 phpMyAdmin 来导出,不过如果你的
[url=javascript:;]数据库[/url]
如果存在下列问题,那么 phpMyAdmin 也无能为力。

  • 数据库的字符集与应用程序的字符集不一致;
  • 应用程序用错误的编码将数据保存到了数据库中;
  • 用 phpMyAdmin 和 mysqldump 导出的数据总是乱码。

总之你用 phpMyAdmin 和 mysqldump 导出的数据有乱码时,就试试看这个脚本吧。
使用很简单:
php export_db.php 数据库名 [-h 主机名] [-c 字符集] [-f 输出文件名] [-u 用户名] [-p]  数据库名是必须提供的,
[url=javascript:;]其他[/url]
参数如果没有提供则使用下面的默认值:     默认主机名 : localhost     默认字符集 : utf8     默认用户名 : root     默认密码 : (无)     默认输出文件 : 数据库名.sql
这个脚本的导出结果就是一个 .sql 文件,只有 insert 语句。
所以数据结构需要单独导出,不过这个就不存在字符集问题了。

[url=javascript:;]代码[/url]



    • if (!function_exists('mysql_connect')) {
    •     if (DIRECTORY_SEPARATOR == '/') {
    •         dl('php_mysql.so');
    •     } else {
    •         dl('php_mysql.dll');
    •     }
    • }

    • $database = null;
    • if (isset($argv[1])) {
    •     $database = $argv[1];
    • } else {
    •     display_help();
    •     exit;
    • }

    • $optional_args = array(
    •     '-h' => 'hostname',
    •     '-c' => 'charset',
    •     '-f' => 'filename',
    •     '-u' => 'username'
    • );

    • $options = array(
    •     'hostname' => 'localhost',
    •     'charset' => 'utf8',
    •     'filename' => '%s.sql',
    •     'username' => 'root',
    • );

    • $input_password = false;
    • for ($i = 2; $i $argc; $i++) {
    •     $arg = $argv[$i];
    •     if ($arg == '-p') {
    •         $input_password = true;
    •         continue;
    •     }
    •     if (isset($optional_args[$arg])) {
    •         $value_name = $optional_args[$arg];
    •         if (isset($argv[$i + 1])) {
    •             $options[$value_name] = $argv[$i + 1];
    •             $i++;
    •         }
    •     }
    • }

    • if ($input_password) {
    •     echo "password: ";
    •     fscanf(STDIN, '%s', $password);
    •     $options['password'] = $password;
    •     echo "\n";
    • } else {
    •     $options['password'] = '';
    • }

    • if ($database == null) {
    •     display_help();
    •     exit;
    • }

    • mysql_connect($options['hostname'], $options['username'], $options['password']);
    • mysql_select_db($database);
    • mysql_query("SET NAMES '{$options['charset']}'");

    • // 设置要导出的表
    • $tables = list_tables($database);

    • $filename = sprintf($options['filename'], $database);
    • $fp = fopen($filename, 'w');
    • foreach ($tables as $table) {
    •     dump_table($table, $fp);
    • }
    • fclose($fp);
    • mysql_close();
    • echo "done.\n";
    • exit;



    • function list_tables($database)
    • {
    •     $rs = mysql_list_tables($database);
    •     $tables = array();
    •     while ($row = mysql_fetch_row($rs)) {
    •         $tables[] = $row[0];
    •     }
    •     mysql_free_result($rs);
    •     return $tables;
    • }

    • function dump_table($table, $fp = null)
    • {
    •     $need_close = false;
    •     if (is_null($fp)) {
    •         $fp = fopen($table . '.sql', 'w');
    •         $need_close = true;
    •     }
    •     fwrite($fp, "-- \n-- {$table}\n-- \n");
    •     $rs = mysql_query("SELECT * FROM `{$table}`");
    •     while ($row = mysql_fetch_row($rs)) {
    •         fwrite($fp, get_insert_sql($table, $row));
    •     }
    •     mysql_free_result($rs);
    •     if ($need_close) {
    •         fclose($fp);
    •     }
    •     fwrite($fp, "\n\n");
    • }

    • function get_insert_sql($table, $row)
    • {
    •     $sql = "INSERT INTO `{$table}` VALUES (";
    •     $values = array();
    •     foreach ($row as $value) {
    •         $values[] = "'" . mysql_real_escape_string($value) . "'";
    •     }
    •     $sql .= implode(', ', $values) . ");\n";
    •     return $sql;
    • }

    • function display_help()
    • {
    •     echo  

    • syntax:
    •     php export_db.php database [-h hostname] [-c charset] [-f filename] [-u username] [-p]

    •     defualt hostname : localhost
    •     default charset  : utf8
    •     default username : root
    •     default password : (none)
    •     default filename : [database].sql

    • EOT;
    • }

    • ?>
      下载:
      export_db.rar


  • 相关阅读 更多 +
    排行榜 更多 +
    辰域智控app

    辰域智控app

    系统工具 下载
    网医联盟app

    网医联盟app

    运动健身 下载
    汇丰汇选App

    汇丰汇选App

    金融理财 下载