<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-314  評(píng)論-209  文章-0  trackbacks-0
    轉(zhuǎn)自:http://blog.chinaunix.net/uid-16844903-id-3411118.html

    工具

    mysql
    mysqldump

    應(yīng)用舉例

    導(dǎo)出
    1. 導(dǎo)出全庫備份到本地的目錄
      mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf8 --lock-all-tables --add-drop-database -A > db.all.sql
      
      
    2. 導(dǎo)出指定庫到本地的目錄(例如mysql庫)
      mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf8 --databases mysql > db.sql
      
      
    3. 導(dǎo)出某個(gè)庫的表到本地的目錄(例如mysql庫的user表)
      mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf8 --tables mysql user> db.table.sql
      
      
    4. 導(dǎo)出指定庫的表(僅數(shù)據(jù))到本地的目錄(例如mysql庫的user表,帶過濾條件)
      mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf8 --no-create-db --no-create-info --tables mysql user --where="host='localhost'"> db.table.sql
      
      
    5. 導(dǎo)出某個(gè)庫的所有表結(jié)構(gòu)
      mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf8 --no-data --databases mysql > db.nodata.sql
      
      
    6. 導(dǎo)出某個(gè)查詢sql的數(shù)據(jù)為txt格式文件到本地的目錄(各數(shù)據(jù)值之間用"制表符"分隔)
      例如sql為'select user,host,password from mysql.user;'
      mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8 --skip-column-names -B -e 'select user,host,password from mysql.user;' > mysql_user.txt
      
      
    7. 導(dǎo)出某個(gè)查詢sql的數(shù)據(jù)為txt格式文件到MySQL服務(wù)器.
      登錄MySQL,將默認(rèn)的制表符換成逗號(hào).(適應(yīng)csv格式文件).
      指定的路徑,mysql要有寫的權(quán)限.最好用tmp目錄,文件用完之后,再刪除!
      SELECT user,host,password FROM mysql.user INTO OUTFILE '/tmp/mysql_user.csv' FIELDS TERMINATED BY ',';
      
    導(dǎo)入
    1. 恢復(fù)全庫數(shù)據(jù)到MySQL,因?yàn)榘琺ysql庫的權(quán)限表,導(dǎo)入完成需要執(zhí)行FLUSH PRIVILEGES;命令
      第一種方法:
      mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8 < db.all.sql
      
      第二種方法:
      登錄MySQL,執(zhí)行source命令,后面的文件名要用絕對(duì)路徑.
      ......
      mysql> source /tmp/db.all.sql;
      
    2. 恢復(fù)某個(gè)庫的數(shù)據(jù)(mysql庫的user表)
      第一種方法:
      mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8 mysql < db.table.sql
      
      第二種方法:
      登錄MySQL,執(zhí)行source命令,后面的文件名要用絕對(duì)路徑.
      mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8
      ......
      mysql> use mysql;
      mysql> source /tmp/db.table.sql;
      
    3. 恢復(fù)MySQL服務(wù)器上面的txt格式文件(需要FILE權(quán)限,各數(shù)據(jù)值之間用"制表符"分隔)
      mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8
      ......
      mysql> use mysql;
      mysql> LOAD DATA INFILE '/tmp/mysql_user.txt' INTO TABLE user ;
      
    4. 恢復(fù)MySQL服務(wù)器上面的csv格式文件(需要FILE權(quán)限,各數(shù)據(jù)值之間用"逗號(hào)"分隔)
      mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8
      ......
      mysql> use mysql;
      mysql> LOAD DATA INFILE '/tmp/mysql_user.csv' INTO TABLE user FIELDS TERMINATED BY ',';
      
    5. 恢復(fù)本地的txt或csv文件到MySQL
      mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8
      ......
      mysql> use mysql;
      # txt
      mysql> LOAD DATA LOCAL INFILE '/tmp/mysql_user.csv' INTO TABLE user;
      # csv
      mysql> LOAD DATA LOCAL INFILE '/tmp/mysql_user.csv' INTO TABLE user FIELDS TERMINATED BY ',';
      

    注意事項(xiàng)

    1. 關(guān)于MySQL連接
      -u$USER 用戶名
      -p$PASSWD 密碼
      -h127.0.0.1 如果連接遠(yuǎn)程服務(wù)器,請(qǐng)用對(duì)應(yīng)的主機(jī)名或者IP地址替換
      -P3306 端口
      --default-character-set=utf8 指定字符集
    2. 關(guān)于mysql參數(shù)
      --skip-column-names 不顯示數(shù)據(jù)列的名字
      -B 以批處理的方式運(yùn)行mysql程序.查詢結(jié)果將顯示為制表符間隔格式.
      -e 執(zhí)行命令后,退出
    3. 關(guān)于mysqldump參數(shù)
      -A 全庫備份
      --routines 備份存儲(chǔ)過程和函數(shù)
      --default-character-set=utf8 設(shè)置字符集
      --lock-all-tables 全局一致性鎖
      --add-drop-database 在每次執(zhí)行建表語句之前,先執(zhí)行DROP TABLE IF EXIST語句
      --no-create-db 不輸出CREATE DATABASE語句
      --no-create-info 不輸出CREATE TABLE語句
      --databases 將后面的參數(shù)都解析為庫名
      --tables 第一個(gè)參數(shù)為庫名 后續(xù)為表名
    4. 關(guān)于LOAD DATA語法
      如果LOAD DATA語句不帶LOCAL關(guān)鍵字,就在MySQL的服務(wù)器上直接讀取文件,且要具有FILE權(quán)限.
      如果帶LOCAL關(guān)鍵字,就在客戶端本地讀取數(shù)據(jù)文件,通過網(wǎng)絡(luò)傳到MySQL.
      LOAD DATA語句,同樣被記錄到binlog,不過是內(nèi)部的機(jī)制.

    mysqldump:數(shù)據(jù)庫備份程序

     

    3種方式來調(diào)用mysqldump

    mysqldump [options] db_name [tables]
    mysqldump [options] ---database DB1 [DB2 DB3...]
    mysqldump [options] --all--database

    如果沒有指定任何表或使用了---database--all--database選項(xiàng),則轉(zhuǎn)儲(chǔ)整個(gè)數(shù)據(jù)庫。

     

    備份一個(gè)數(shù)據(jù)庫.

    mysqldump -uroot -p123456 mysql > mysql_backup.sql

    這里備份了database mysql的結(jié)構(gòu)和數(shù)據(jù),生成的sql文件不會(huì)有創(chuàng)建database mysql的語句。

     

    可以用一個(gè)命令備份mysql,test多個(gè)數(shù)據(jù)庫:

    mysqldump -u root -p123456 --database mysql test > my_databases.sql

    生成的sql文件有創(chuàng)建database mysql和test的語句

     

    備份所有數(shù)據(jù)庫

    mysqldump -u root -p123456  --all-databases > all_databases.sql

     

    導(dǎo)出mysql這個(gè)數(shù)據(jù)庫的結(jié)構(gòu)

     mysqldump -u root -p123456 -d --add-drop-table mysql > mysql_define.sql

     

    導(dǎo)出一個(gè)數(shù)據(jù)所有數(shù)據(jù)并用gz壓縮

    mysqldump -u root -p123456 mysql | gzip > mysql.sql.gz

     

     

    可以這樣將轉(zhuǎn)儲(chǔ)文件讀回到服務(wù)器:

    mysql db_name < backup-file.sql
    mysql -e "source /path-to--backup/backup-file.sql" db_name

    或者從gz文件中還原

    gunzip -f < mysql.sql.gz | mysql -u root -p123456 test

     更多參考 http://dev.mysql.com/doc/refman/5.1/zh/client-side-scripts.html#mysqldump

     

    SELECT...INTO OUTFILE

    SELECT...INTO OUTFILE 'file_name'形式的SELECT可以把被選擇的行寫入一個(gè)文件中,該文件被創(chuàng)建到服務(wù)器主機(jī)上。

    SELECT...INTO OUTFILELOAD DATA INFILE的補(bǔ)語;用于語句的exort_options部分的語法包括部分FIELDSLINES子句,這些子句與LOAD DATA INFILE語句同時(shí)使用。

    在下面的例子中,生成一個(gè)文件,各值用逗號(hào)隔開。這種格式可以被許多程序使用

    SELECT * INTO OUTFILE '/tmp/result.txt' 
    FIELDS TERMINATED BY ',' 
    OPTIONALLY ENCLOSED BY '"' 
    LINES TERMINATED BY '\n'
    FROM mysql.user;

    將mysql數(shù)據(jù)庫的user表的數(shù)據(jù)導(dǎo)出到/tmp/result.txt

    SELECT...INTO OUTFILE只能導(dǎo)出數(shù)據(jù),不能導(dǎo)出結(jié)構(gòu),一般和load data聯(lián)合使用。

    更多參考 http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#select

     

    LOAD DATA INFILE

    LOAD DATA INFILE語句用于高速地從一個(gè)文本文件中讀取行,并裝入一個(gè)表中。文件名稱必須為一個(gè)文字字符串。

    character_set_database系統(tǒng)變量指示的字符集被用于解釋文件中的信息。

    LOAD DATA LOCAL INFILE '/tmp/result.txt' INTO TABLE test.user
    FIELDS TERMINATED BY ',' 
    OPTIONALLY ENCLOSED BY '"' 
    LINES TERMINATED BY '\n'

    把/tmp/result.txt的數(shù)據(jù)導(dǎo)入到test數(shù)據(jù)庫的user表。

     

    更多參考 http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#load-data





    posted on 2015-02-09 10:52 xzc 閱讀(660) 評(píng)論(0)  編輯  收藏 所屬分類: mysql
    主站蜘蛛池模板: 国产人成亚洲第一网站在线播放| 亚洲AV综合色区无码另类小说 | CAOPORN国产精品免费视频| 暖暖免费高清日本一区二区三区| 亚洲熟妇自偷自拍另欧美| 毛片免费全部免费观看| 亚洲色无码专区一区| 国产女高清在线看免费观看| 色屁屁在线观看视频免费| 亚洲成av人片不卡无码久久| 一区二区视频免费观看| 亚洲精品乱码久久久久66| 免费看男人j放进女人j免费看| 亚洲成a人片在线观看中文动漫| 精品无码人妻一区二区免费蜜桃| 久久久亚洲欧洲日产国码是AV| 91手机看片国产永久免费| 亚洲乱码一区二区三区国产精品| 最好免费观看韩国+日本| 羞羞视频免费网站入口| 日本亚洲成高清一区二区三区| 性色午夜视频免费男人的天堂| 亚洲国产成人超福利久久精品| 午夜免费福利在线观看| 国产精品99爱免费视频| 亚洲精品美女在线观看播放| 免费黄色小视频网站| 本免费AV无码专区一区| 亚洲日本国产精华液| 国产jizzjizz视频免费看| 久久久国产精品福利免费| 亚洲毛片基地4455ww| 狠狠色婷婷狠狠狠亚洲综合| 99re在线免费视频| 香蕉视频免费在线播放| 亚洲人成在线电影| 亚洲第一福利网站在线观看| 91视频免费网址| 成人午夜免费视频| 亚洲成人动漫在线观看| 亚洲精品国产精品乱码不卡 |