在從文字檔案匯入資料到 MySQL 表時,跳脫字元(\)有什麼作用?
當我們想要在欄位的值之間插入逗號或任何其他字元時,使用跳脫字元(\)將變得非常重要。可以透過一個例子來理解。假設我們想將名為 A.txt 的文字檔案中的資料匯入到 MySQL 表中:
id, Name, Country, Salary 105, Chum, Marsh,USA, 11000 106, Danny, Harrison,AUS, 12000
在這裡,我們可以看到欄位名稱有兩個值,第一個名稱和最後一個名稱由逗號分隔。現在,以下查詢將從上述文字檔案“A.txt”匯入資料到“employee4_tbl”中:
mysql> LOAD DATA LOCAL INFILE 'd:\A.txt' INTO table employee4_tbl FIELDS TERMINATED BY ',' IGNORE 1 ROWS; Query OK, 2 rows affected, 4 warnings (0.05 sec) Records: 2 Deleted: 0 Skipped: 0 Warnings: 4
我們可以看到,當我們將資料從“A.txt”匯入到表中時,有 4 個警告。以下查詢將向我們顯示已插入表中的內容:
mysql> Select * from employee4_tbl; +------+---------+----------+--------+ | Id | Name | Country | Salary | +------+---------+----------+--------+ | 105 | Chum | Marsh | 0 | | 106 | Danny | Harrison | 0 | +------+---------+----------+--------+ 2 rows in set (0.00 sec)
以上結果集顯示,MySQL 將“lastname”(它是“name”欄位的值)預測為“Country”欄位的值。
可以透過在文字檔案中新增跳脫字元來消除上述問題,如下所示:
id, Name, Country, Salary 105, Chum\, Marsh,USA, 11000 106, Danny\, Harrison,AUS, 12000
現在,使用以下查詢將此文字檔案匯入到 MySQL 表中:
mysql> LOAD DATA LOCAL INFILE 'd:\A.txt' INTO table employee5_tbl FIELDS TERMINATED BY ',' IGNORE 1 ROWS; Query OK, 2 rows affected (0.03 sec) Records: 2 Deleted: 0 Skipped: 0 Warnings: 0
我們可以看到,與上面查詢中的情況相比,現在沒有警告了。現在,我們可以使用以下查詢檢視已匯入的內容:
mysql> Select * from employee5_tbl; +------+----------------+----------+--------+ | Id | Name | Country | Salary | +------+----------------+----------+--------+ | 105 | Chum,Marsh | USA | 11000 | | 106 | Danny,Harrison | AUS | 12000 | +------+----------------+----------+--------+ 2 rows in set (0.00 sec)
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP