在將文字檔案中的資料匯入 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)
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP