在从文本文件导入数据到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将字段“name”的值“lastname”视为字段“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)
阅读更多:MySQL 教程
极客教程