MySQL将制表符分隔的文件加载到具有特殊字符的表中

标签 mysql sql

我希望能够像这样将一个文件加载到一个包含反斜杠的 MySQL 表中:

Fred          Los Angeles        I am Fred
Nick          Madison            Great Lakes Whoo
JOHN          San Diego          Hello world!\
Bob           NYC                Big apple            

用户 JOHN 在第 3 列的末尾放置了一个 \。当我将其加载到表中时,MySQL 将反斜杠解释为某种行延续并将第 3 行,第 3 行与(第 4 行,第 1 列)。

我不能只通过复制和粘贴来修复它,因为有数百万行这样的行在不同的地方带有反斜杠,造成了严重破坏。

将制表符分隔的文件加载到带有反斜杠的 MySQL 表中的正确方法是什么?我应该用引号将每个(列)字段括起来吗?我应该编写一个删除特殊字符的解析器吗?

最佳答案

加载文件时必须指定 ESCAPED BY 选项。在以下示例中,我假设您的字段按制表符划分(这是默认行为)并且文件位于客户端主机上:

LOAD DATA LOCAL INFILE '/path/to/file/my.txt' INTO TABLE t
FIELDS TERMINATED BY '\t' ESCAPED BY '\b';

关于MySQL将制表符分隔的文件加载到具有特殊字符的表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15537199/

相关文章:

php - 如何显示大段落的前几行?

sql - 检查关系是否存在并返回真或假

sql - 为什么 SQL Server 使用无效样式将 VARCHAR 转换为 DATETIME?

sql - 如何使用Oracle SQL Developer导出数据?

mysql - MYSQL 的 CASE 问题

mysql - 改进 mysql 中的 SQL 语句以更快地运行。我想合并字段但在不同的行上合并

MySQL Over 从 SQL 到 MySQL 的转换

php - 查找 PostgreSQL 中一组之间的所有行

mysql - EJS 中用户定义的 MySQL 变量

php - 高效插入复杂数据mysql