在將文字檔案中的資料匯入 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)

更新於: 2020年2月4日

324 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.