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

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";

}

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值