共計 2431 個字符,預計需要花費 7 分鐘才能閱讀完成。
本篇內容介紹了“MySQL 表數據的導入與導出方法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
LOAD DATA INFILE
LOAD DATA INFILE 語句可以快速將文本記錄導入到表中,SELECT … INTO OUTFILE 可以將表中數據導入到文件中,兩者的 FIELDS、LINES 子句語法相同。
執行語句的用戶需要有 FILE 權限,且 mysql 用戶對數據文件可讀。
mysqlimport 也可以實現將文本文件導入到表中,mysqlimport 也是向服務器調用 LOAD DATA INFILE 語句,–local 選項可以讀取客戶端的文件。
LOAD DATA INFILE 語法如下:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE file_name
[REPLACE | IGNORE]
INTO TABLE tbl_name
[PARTITION (partition_name,...)]
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS}
[TERMINATED BY string]
[[OPTIONALLY] ENCLOSED BY char ]
[ESCAPED BY char]
]
[LINES
[STARTING BY string]
[TERMINATED BY string]
]
[IGNORE number {LINES | ROWS}]
[(col_name_or_user_var,...)]
[SET col_name = expr,...]
LOCAL
當指定 local 時,客戶端將讀取文件發送到服務器操作系統的臨時目錄 (非 MySQL 臨時目錄),如空間不如將導致執行失敗。如未指定 local,則會從服務器讀取,相對路徑是相對于 data_dir 的路徑。
LOAD DATA INFILE: 當數據非法或數據唯一索引沖突將導致執行失敗。LOAD DATA LOCAL INFILE:因為服務器端無法終止客戶端文件發送,當數據非法或數據唯一索引沖突時將會警告忽略錯誤繼續,類似 IGNORE。
REPLACE
出現數據唯一索引沖突將會替代現有的記錄
IGNORE
出現數據唯一索引沖突將會被忽略。如果 IGNORE 與 REPLACE 都沒指定,則取決于 LOCAL 選項。如果 local 也沒有指定,則重復數據之后的文件數據將被不會執行,如指定 local,則會忽略沖突繼續執行。
IGNORE number LINES
指定跳過文件開頭的幾行記錄
LOAD DATA INFILE 用法:
默認 load data infile 的格式 (不指定 FIELDS,LINES 選項)
FIELDS TERMINATED BY \t
ENCLOSED BY
ESCAPED BY \\
LINES TERMINATED BY \n
STARTING BY
導入 csv 文件
LOAD DATA INFILE data.txt INTO TABLE tbl_name
FIELDS TERMINATED BY , ENCLOSED BY
LINES TERMINATED BY \r\n
IGNORE 1 LINES;
導入包含指定列的文件
LOAD DATA INFILE data.txt INTO TABLE tbl_name
FIELDS TERMINATED BY ,
(column2,column3);
導入文件設定指定列的值
LOAD DATA INFILE data.txt INTO TABLE tbl_name
FIELDS TERMINATED BY ,
(column1,column2)
set column3 = CURRENT_TIMESTAMP;;
SELECT … INTO OUTFILE
SELECT … INTO OUTFILE 會將查詢結果寫入到服務器,因此需要有 FILE 權限,同時需要對指定的路徑有寫入權限,且指定文件不能是服務器已有文件。
客戶端生成指定結果文件可使用 mysql -e SELECT … file_name
SELECT … INTO OUTFILE 與 LOAD DATA INFILE 的 FIELDS、LINES 子句語法相同。
OPTION 選項含義如下:
FIELDS TERMINATED BY value
設置字段之間的分隔字符,可以為單個或多個字符,默認為制表符 \t
FIELDS [OPTIONALLY] ENCLOSED BY value
設置字段的包圍字符,只能為單個字符
FIELDS ESCAPED BY value
設置轉義字符,只能為單個字符,默認值為‘\’
LINES STARTING BY value
設置每行數據開頭的字符,可以為單個或多個字符,默認情況下不使用任何字符
LINES TERMINATED BY value
設置每行數據結尾的字符,可以為單個或多個字符,默認值為 \n ,WINDOWS 回車換行符為 \r\n
導出 csv 格式的文件
SELECT a,b,a+b INTO OUTFILE /tmp/result.txt
FIELDS TERMINATED BY , OPTIONALLY ENCLOSED BY
LINES TERMINATED BY \n
FROM test_table;
mysqldump -T path dbname tbl_name 也可以生成文本文件,在 path 目錄生成一個 tbl_name.sql 表定義文件和 tbl_name.txt 文件表數據文件,可以指定 fields 與 lines 選項指定生成數據文件的格式。
“MySQL 表數據的導入與導出方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!