在将文本文件中的数据导入 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)
广告