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