我正在尝试使用 MySQL 上传制表符分隔的文件。我想要一个类似这样的查询: LOAD DATA LOCAL INFILE 'file' INTO TABLE tbl FIELDS TERMINATED BY 'TAB'
有什么我可以代替 TAB 来完成这项工作吗?
3 回答
你试过'\t'转义序列+“T”被认为是制表符......没试过,但可能是你需要的
只是试图自己找到这个问题的答案,以保存用逗号分隔而不是制表符重新保存我的文件......
从旧的 MySQL 参考手册中,您可以发现TAB 是使用 MySQL 上的 LOAD DATA 加载的文件的默认分隔符。
见:http ://dev.mysql.com/doc/refman/4.1/en/load-data.html
我只是以这种方式将一个CSV文件加载到MySQL5.1中。
体重
由 '\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
更多细节。