MYSQL_OUTPUT 脚本【修正】

这个重新写的一个MYSQL数据导出脚本, 导出格式为CSV,这种格式更加的轻便,不会过份影响数据文件体积,适合导入到本地数据库!大家通过修改代码里面标注的一些配置变量就可以了。如果导出数据有筛选要求可以直接修改SQL语句满足你的要求!

脚本运行提醒:

如果数据是百万级别,这个脚本并不适合通过浏览器访问来脱裤,所以要用命令行来运行该脚本,这样就不会漏数据了。(记得网上广传的adminer 脚本,这个导出大量数据时会不完整,十分不稳定!只适合浏览数据和修改。)

 

运行方式:

linux 下可以 :

php /tmp/outdata.php (在未安装PHP 环境中,需要单独去安装一下PHP。)

问题总结:

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

1 。提示PHP没找到就是下面这样的情况:

没有设置对应PHP环境变量则找不到PHP 路径。(这些操作最好在SSH 或者反弹出的shell 中操作。我用菜刀的命令行运行脚本,导出大量数据也没任何问题, 你也可以这样做。)

解决办法:

Linux 安装了PHP, 不知道路径 敲入下面命令

locate php | more

带上PHP完整路径执行脚本就行了。windows 下就需要找到php 的安装路径了,一般情况管理员可能并没有为PHP设置环境变量!

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

提醒 : 数据导出过程中,会生成data.csv 数据文件,数据在多的情况,不会瞬间导出完毕,要等待一会。如果你用类似菜刀这样的工具运行的脚本,菜刀在一段时间内没接收到数据会出现超时提醒,但不是你的脚本超时,你要不断刷新注意文件体积,如果看到大小不变了,那就导出完毕了。脚本只是脱整个表的数据,如果你的需求不是这样,那就要另外修改了!

 

<?php
ini_set('max_execution_time', 0);
ini_set('memory_limit','900M'); // 内存最大空间。 Discuz/uccenter 一般几百W 数据也就占用 160 - 200 M 硬盘空间
$db_host = 'localhost';   // host
$db_user = 'uc';  // mysql user
$db_pass = '527200.kenweige';  // mysql pass
$db_database = 'uc';  // database name
$table_name = 'uc_members';  // table
$sql = mysql_connect($db_host,$db_user,$db_pass) or die('Error!');
mysql_select_db($db_database,$sql) or die("Could not connect: " . mysql_error()."\n");
mysql_query('SET NAMES GBK');
$query = "SELECT * FROM $table_name";
$export = mysql_query($query) or die("Sql error : ".mysql_error()."\n");
$fields = mysql_num_fields ($export);
$data = '';
$header = '';
for ( $i = 0; $i < $fields; $i++)
{
    $header .= mysql_field_name($export , $i).',';
}
$header = substr($header, 0, -1);
while ($row = mysql_fetch_array($export, MYSQL_NUM))
{
    $line = '';
    foreach($row as $value)
    {                                            
        if ((!isset($value)) || ($value == ""))
        {
            $value = '"",';
        }
        else
        {
            $value = str_replace('"', '""', $value );
            $value = '"'.$value.'"'.',';
        }
        $line .= $value;
    }
    wf(substr(Trim($line), 0, -1)."\n");
}
function wf($data)
{
$fh = fopen("data.csv", 'a+');
fwrite($fh, $data);
fclose($fh);
}

if ( $data == "" )
{
    $data = "\n(0) Records Found!\n";                        
}
?>

 

 

转载于:https://www.cnblogs.com/xiaosan/archive/2011/06/03/2070269.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值