这是对早期问题的跟进:MySQL how to specify string position with LOAD DATA INFILE
将长行加载到临时表的TEXT字段时,会将其截断为256个字符。如果我对同一行使用INSERT,则不会截断。
MySQL Documentation提到LOAD DATA INFILE不支持固定大小的行:
LOAD DATA INFILE不支持某些情况:
固定大小的行(FIELDS TERMINATED BY和FIELDS ENCLOSED by empty)和BLOB或TEXT列。
但它并没有真正解释原因。有没有办法在不改变输入文件的情况下解决这个问题?
来自.txt文件的行示例:
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789ONEHUNDRED012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789TWOHUNDRED012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789TREHUNDRED
答案 0 :(得分:1)
文档告诉您,固定大小行模式不支持TEXT
列。但是在这种情况下,您将整行作为单个字段读取,您不需要使用固定大小模式。只需指定任何行中都不会发生的字段分隔符。例如,如果您的文件没有任何制表符,只需省略FIELDS TERMINATED BY
子句,它将使用tab作为默认字段分隔符:
LOAD DATA INFILE 'yourfile' INTO TABLE tmp_lines
LINES TERMINATED BY '\r\n';