有時經(jīng)常會需要將MySQL數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)出到外部存儲文件中,MySQL數(shù)據(jù)庫中的數(shù)據(jù)庫可以導(dǎo)出成sql文本文件、xml文件或者h(yuǎn)tml文件以及txt文本文件,同樣這些導(dǎo)出文件也可以導(dǎo)入到MySQL數(shù)據(jù)庫中。
1)用SELECT * INTO OUTFILE導(dǎo)出文本文件
MySQL數(shù)據(jù)庫導(dǎo)出數(shù)據(jù)時,允許使用包含導(dǎo)出定義的SELECT語句進(jìn)行數(shù)據(jù)的導(dǎo)出操作。該文件被創(chuàng)建到服務(wù)器主機(jī)上,因此必須擁有文件的寫入權(quán)限并且此文件不能提前存在,才能使用此語法。語法如下:
| 1 | SELECT col1.. FROM table_name WHERE condition INTO OUTFILE "file_name" [options]; |
[options]
| 123456 | FIELDSTERMINATEDBY'value' #設(shè)置字段之間的分割字符,可以為單個或多個字符,默認(rèn)為制表符'/t';FIELDS[OPTIONALLY]ENCLOSEDBY'value' #設(shè)置字段的包圍字符,只能夠?yàn)閱蝹€字符,如果使用OPTIONALLY則只有CHAR和VARCHAR等字符數(shù)據(jù)字段被包括;FIELDSESCAPEDBY'value' #設(shè)置如何寫入或讀取特殊字符,只能夠?yàn)閱蝹€字符,即設(shè)置轉(zhuǎn)衣服,默認(rèn)值為'/';LINESSTARTINGBY'value' #設(shè)置每行數(shù)據(jù)開頭的字符,可以為單個或多個字符,默認(rèn)情況下不適用任何字符;LINESTERMINATEDBY'value' #設(shè)置每行數(shù)據(jù)結(jié)尾的字符,可以為單個或多個字符,默認(rèn)值為'/n'; #FIELDS和LINES兩個子句都是自選的,但是如果兩個都被指定了,F(xiàn)IELDS必須位于LINES的前面。 |
實(shí)例
| 12345 | # 以默認(rèn)制表符“/t”格式導(dǎo)出數(shù)據(jù)到/tmp/1.txt文件;Mysql> select * from TABLE_NAME into outfile "/tmp/1.txt"; # 以分號格式導(dǎo)出數(shù)據(jù)到/tmp/1.txt文件;Mysql> select * from TABLE_NAME into outfile "/tmp/1.txt" FIELDS TERMINATED BY ':'; |
PS:可以把導(dǎo)入的文本文件格式化,命令“unix2dos 1.txt“是把linux格式的文本格式化成Windows格式的,命令”dos2unix“相反。如果要把文本文件導(dǎo)入到Excel中,可以創(chuàng)建新表格—–打開文件(所有文件)—–選擇txt文件—–選擇分割方式(tab/space/,)。
2)用mysqldump命令導(dǎo)出文本文件
Mysqldump工具不僅可以做備份數(shù)據(jù)的工具可以將數(shù)據(jù)導(dǎo)出為包含CREATE、INSERT的sql文件,也可以導(dǎo)出為文本文件。
| 1 | mysqldump-Tpath-uroot-PRedhatdb_name[tables][options] |
[options]
| 12345 | --fields-terminated-by=value #設(shè)置字段之間的分割字符,可以為單個或多個字符,默認(rèn)為制表符'/t';--field-enclosed-by=value #設(shè)置字段的包圍字符;--fields-optionally-enclosed-by=valu #設(shè)置字段的包圍字符,只能夠?yàn)閱蝹€字符,如果使用OPTIONALLY則只有CHAR和VARCHAR等字符數(shù)據(jù)字段被包括;--fields-escaped-by=value #設(shè)置如何寫入或讀取特殊字符,只能夠?yàn)閱蝹€字符,即設(shè)置轉(zhuǎn)衣服,默認(rèn)值為'/';--lines-terminated-by=value #設(shè)置每行數(shù)據(jù)結(jié)尾的字符,可以為單個或多個字符,默認(rèn)值為'/n'; |
只有指定了-T參數(shù)才可以導(dǎo)出純文本文件,path表示導(dǎo)出數(shù)據(jù)的目錄,tables為指定要導(dǎo)出的表名稱,如果不指定,將導(dǎo)出數(shù)據(jù)庫db_name中所有的表。[options]為可選參數(shù)選項(xiàng),這些選項(xiàng)需要結(jié)合-T選項(xiàng)使用才有效。
| 12 | # 此語句將會在/tmp目錄下生成兩個文件,一個是1.sql和1.txt;$ mysqldump-T/tmp/1.txtdb_name.table_name-uroot-predhat |
| 1 | $ mysqldump -T /tmp/1.txt db_name.table_name -uroot -predhat --fields-terminated-by=: --fields-optionally-enclosed-by=/" --fields-escaped-by=? --lines-terminated-by=/r/n |
PS:所有操作中-uroot是指定登陸用戶,-predht是指定登陸使用的密碼。
3)用mysql命令導(dǎo)出文本文件
MySQL是一個功能豐富的工具命令,使用mysql還可以在命令行模式下執(zhí)行SQL指令,將查詢結(jié)果導(dǎo)入到文本文件中。相比mysqldump,mysql工具導(dǎo)出的結(jié)果可讀性更強(qiáng)。語法如下:
| 12345 | # 把查詢結(jié)果導(dǎo)出到文本文件;$mysql-uroot-predhat-e"SELECT * FROM table_name;"db_name>filename.txt # 把查詢結(jié)果導(dǎo)出成html格式;$mysql-uroot--predhat--html-e"SELECT * FROM table_name;"db_name>filename.html |
1)用LOAD DATA INFILE方式導(dǎo)入文本文件
MySQL允許將數(shù)據(jù)導(dǎo)出到外部文件,也可以從外部文件導(dǎo)入數(shù)據(jù)。MySQL提供了一些導(dǎo)入數(shù)據(jù)的工具,這些工具有LOAD DATA語句、source命令和mysql命令。LOAD DATA INFILE語句用于高速地從一個文本文件中讀取行,并裝入一個表中。文件名稱必須為文字字符串。下面介紹LOAD DATA語句的語法。
| 1 | LOAD DATA INFILE ‘filename.txt’ INTO TABLE table_name [options] [IGNORE number LINES] |
[options]
| 123456 | FIELDSTERMINATEDBY'value' #設(shè)置字段之間的分割字符,可以為單個或多個字符,默認(rèn)為制表符'/t';FIELDS[OPTIONALLY]ENCLOSEDBY'value' #設(shè)置字段的包圍字符,只能夠?yàn)閱蝹€字符,如果使用OPTIONALLY則只有CHAR和VARCHAR等字符數(shù)據(jù)字段被包括;FIELDSESCAPEDBY'value' #設(shè)置如何寫入或讀取特殊字符,只能夠?yàn)閱蝹€字符,即設(shè)置轉(zhuǎn)衣服,默認(rèn)值為'/';LINESSTARTINGBY'value' #設(shè)置每行數(shù)據(jù)開頭的字符,可以為單個或多個字符,默認(rèn)情況下不適用任何字符;LINESTERMINATEDBY'value' #設(shè)置每行數(shù)據(jù)結(jié)尾的字符,可以為單個或多個字符,默認(rèn)值為'/n';[IGNOREnumberLINES] #選項(xiàng)表示忽略文件開始處的行數(shù),number表示忽略的行數(shù)。執(zhí)行LOAD DATA語句需要FILE權(quán)限; |
實(shí)例:將/tmp/2.txt文件以':’為分隔符將多個字段數(shù)據(jù)導(dǎo)入到user.aa表中,aa表必須提前存在,且表字段需設(shè)定好。
| 1 | Mysql> load data infile '/tmp/2.txt' into table user.aa fields terminated by ':'; |
2)用mysqlimport命令導(dǎo)入文本文件
Mysqlimport是MySQL內(nèi)置的一個工具,使用mysqlimport可以導(dǎo)入文本文件,并且不需要登陸MySQL客戶端。Mysqlimport命令提供許多與LOAD DATA INFILE語句相同的功能。大多數(shù)選項(xiàng)直接對應(yīng)LOAD DATA INFILE子句,語法如下:
| 12345678 | mysqlimport-uroot-predhatdb_namefilename.txt[options][options]--fields-terminated-by=value--field-enclosed-by=value--fields-optionally-enclosed-by=value--fields-escaped-by=value--lines-terminated-by=value--ignore-lines=n |
新聞熱點(diǎn)
疑難解答