我想大家都知道數據導入和導入可以使用mysql自帶的功具mysqldump來實現,同時也可以自定義程序來實現,下面我介紹了二種方法.
先來講講利用比如到處數據用逗號(‘),豎線(|)隔開的數據,很多人會說使用如下代碼:
mysql -uUser -pPwd dbName -e “$sql” 進行導出.
其中$sql使用如下代碼:
- SELECT * FROM `TABLENAME` WHERE xxx INTO OUTFILE “指定文件路勁” FIELDS TERMINATED BY ”|“
這種往往很多會報沒有權限之類的莫名其妙的錯誤.
錯誤一,代碼如下:
ERRORERROR 1045 (28000) at line 1: Access denied for user 'qinghua'@'localhost' (using password: YES)
錯誤二,代碼如下:
ERRORERROR 1 (HY000) at line 1: Can't create/write to file '/home/martin/outfile' (Errcode: 13)
錯誤一是由于普通用戶沒有執行權限,錯誤二是由于沒有權限穿件文件”aa”,正確的做應該是,如下代碼:
SHELLmysql -uqinghua -p123456 qinghua --e "select * from qinghua.user where 1 into outfile 'outfile' FIELDS TERMINATED BY'|'"
這樣它穿件的文件會出現在mysql datadir目錄對應的數據庫文件夾內,如果想把文件創建到指定目錄內,那你一定得賦予改目錄mysql寫入權限.
一般的做法是,代碼如下:
- mkdir -p /home/martin/outdata;
- chown mysql.mysql /home/martin/outdata;
- sudo chmod 777 /home/martin/outdata;
- --Vevb.com
- SHELLmysql -uqinghua -p123456 qinghua --e "select * from qinghua.user where 1 into outfile '/home/martin/outdata/outfile' FIELDS TERMINATED BY'|'"
mysqldump參數介紹
–w 設定導出的條件。
–no-create-db 導出時不到出穿件數據庫。
–no-create-info 不創建表結構。
–xml 導出xml格式文件。
–skip-add-drop-table 不創建刪除表結構語句。
mysql數據導入一般使用 mysql -uUser -pPwd dbName < xxx.sql,或者使用source進行導入。
參考地址:
http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html
http://dev.mysql.com/doc/refman/5.1/zh/replication.html 生成二進制日志,進行雙機熱備.
再看看其它的方法
導出程序如下:調用方法為 ****.php?table=tablename,這個簡單的程序目前一次保存一個表格,每行為一個字段的數據,代碼如下:
- if($table=="")exit();
- mysql_connect("localhost","name","password");
- mysql_select_db("database");
- $result = mysql_query("select * from $table");
- if(mysql_num_rows($result) < = 0) exit();
- echo "開始轉換數據到文本...
- ";
- $handle = fopen("$table.txt","w");
- $numfields = mysql_num_fields($result);
- fputs($handle,$numfields."rn");
- for($k=0;$k
- {
- $msg = mysql_fetch_row($result);
- for($i=0;$i< $numfields;$i++)
- {
- $msg[$i] = str_replace("rn","&&php2000mysqlreturn&&",$msg[$i]);
- $msg[$i] = str_replace("n" ,"&&php2000mysqlreturn&&",$msg[$i]);
- fputs($handle,$msg[$i]."rn");
- }
- fputs($handle,"------- php2000 dump data program V1.0 for MySQL --------rn");
- }
- fclose($handle);
- echo "ok";
導入的程序如下,用法同上面,代碼如下:
- if($table=="")exit();
- mysql_connect("localhost","name","password");
- mysql_select_db("database");
- $message = file("$table.txt");
- echo $numfields = chop($message[0]);
- for($k=1;$k
- {
- $value="";
- for ($i=$k;$i< ($k+$numfields-1);$i++)
- {
- $tmp = str_replace("&&php2000mysqlreturn&&","rn",chop($message[$i]));
- $value .= "'".addslashes($tmp)."',";
- }
- $tmp = str_replace("&&php2000mysqlreturn&&","rn",chop($message[$k+$numfields-1]));
- $value .= "'".$tmp."'";
- $query = "insert into $table values (".$value.")";
- echo mysql_error();
- mysql_query($query);
- echo $k." ";
- }
- echo "ok";
新聞熱點
疑難解答