在從文字檔案匯入資料到 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-02-04

324 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.