5

我正在尝试使用 MySQL 上传制表符分隔的文件。我想要一个类似这样的查询: LOAD DATA LOCAL INFILE 'file' INTO TABLE tbl FIELDS TERMINATED BY 'TAB' 有什么我可以代替 TAB 来完成这项工作吗?

4

3 回答 3

13

你试过'\t'转义序列+“T”被认为是制表符......没试过,但可能是你需要的

于 2010-04-06T00:35:28.793 回答
1

只是试图自己找到这个问题的答案,以保存用逗号分隔而不是制表符重新保存我的文件......

从旧的 MySQL 参考手册中,您可以发现TAB 是使用 MySQL 上的 LOAD DATA 加载的文件的默认分隔符

见:http ://dev.mysql.com/doc/refman/4.1/en/load-data.html

我只是以这种方式将一个CSV文件加载到MySQL5.1中。

体重

于 2012-08-17T06:43:24.777 回答
0

由 '\t' 终止的字段

试试这个

笔记 :

现场和线路处理

对于 LOAD DATA 和 SELECT ... INTO OUTFILE 语句,FIELDS 和 LINES 子句的语法是相同的。这两个子句都是可选的,但如果同时指定了这两个子句,则 FIELDS 必须在 LINES 之前。

如果您指定 FIELDS 子句,则它的每个子子句(TERMINATED BY、[OPTIONALLY] ENCLOSED BY 和 ESCAPED BY)也是可选的,除非您必须至少指定其中一个。这些子句的参数只允许包含 ASCII 字符。

如果您不指定 FIELDS 或 LINES 子句,则默认值与您编写的相同:

由 '\t' 终止的字段由 '' 封闭由 '\\' 转义

由 '\n' 终止的行由 '' 开始

反斜杠是 SQL 语句中字符串中的 MySQL 转义字符。因此,要指定文字反斜杠,您必须指定两个反斜杠以将值解释为单个反斜杠。转义序列 '\t' 和 '\n' 分别指定制表符和换行符。

换句话说,默认值会导致 LOAD DATA 在读取输入时执行如下操作:

在换行符处查找行边界。

不要跳过任何行前缀。

在制表符处将行拆分为字段。

不要期望字段包含在任何引用字符中。

将转义字符 \ 前面的字符解释为转义序列。例如,\t、\n 和 \ 分别表示制表符、换行符和反斜杠。有关转义序列的完整列表,请参阅后面对 FIELDS ESCAPED BY 的讨论。

相反,默认值会导致 SELECT ... INTO OUTFILE 在写入输出时执行如下操作:

在字段之间写入标签。

不要将字段括在任何引用字符中。

使用 \ 转义出现在字段值中的制表符、换行符或 \ 的实例。

在行尾写下换行符。

见:https ://dev.mysql.com/doc/refman/8.0/en/load-data.html

更多细节。

于 2019-01-19T16:08:57.380 回答