這個重新寫的乙個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 資料檔案,資料在多的情況,不會瞬間匯出完畢,要等待一會。如果你用類似菜刀這樣的工具執行的指令碼,菜刀在一段時間內沒接收到資料會出現超時提醒,但不是你的指令碼超時,你要不斷重新整理注意檔案體積,如果看到大小不變了,那就匯出完畢了。指令碼只是脫整個表的資料,如果你的需求不是這樣,那就要另外修改了!
<?phpini_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 = substr($header, 0, -1);
while ($row = mysql_fetch_array($export, mysql_num))
else
$line .= $value;
}wf(substr(trim($line), 0, -1)."\n");
}function wf($data)
if ( $data == "" )
?>
GM 指令碼 修正 github
從某時起,github 和 linux 一樣,開始有著越來越多的 bug 和讓人不舒服的地方。本文所附的 greasemonkey 指令碼修正以下問題 新建專案後,從已有專案建立的提示命令使用https而不再是ssh協議。這直接導致 git 向使用者詢問使用者名稱和密碼,而不使用使用者已經上傳並確認...
GM 指令碼 修正 github
從某時起,github 和 linux 一樣,開始有著越來越多的 bug 和讓人不舒服的地方。本文所附的 greasemonkey 指令碼修正以下問題 新建專案後,從已有專案建立的提示命令使用https而不再是ssh協議。這直接導致 git 向使用者詢問使用者名稱和密碼,而不使用使用者已經上傳並確認...
Ruby rcov問題修正
前兩天在我本機上用rcov測試覆蓋率,出錯,出錯提示為 rexml formatters pretty.rb 131 in implicit conversion from nil to integer 現已查明原因,是rcov 0.8.1.2.0和 ruby1.8.7的rexml庫不相容所致。修改...