0

这是对较早问题的跟进: MySQL 如何使用 LOAD DATA INFILE 指定字符串位置

将长行加载到临时表的 TEXT 字段时,它会将其截断为 256 个字符。如果我对同一行使用 INSERT,它不会截断。

MySQL 文档提到 LOAD DATA INFILE不支持固定大小的行:

LOAD DATA INFILE 不支持某些情况:

固定大小的行(FIELDS TERMINATED BY 和 FIELDS ENCLOSED BY 均为空)和 BLOB 或 TEXT 列。

但这并没有真正解释为什么。有没有办法在不更改输入文件的情况下解决这个问题?

.txt 文件中的行示例: 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789ONEHUNDRED012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789TWOHUNDRED012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789TREHUNDRED

4

1 回答 1

1

文档告诉您的是,固定大小的行模式TEXT不支持列。但是在这种情况下,您将整行作为单个字段读取,因此您不需要使用固定大小模式。只需指定一个不会出现在任何行中的字段分隔符。例如,如果您的文件没有任何制表符,只需省略该子句,它将使用制表符作为默认字段分隔符:FIELDS TERMINATED BY

LOAD DATA INFILE 'yourfile' INTO TABLE tmp_lines
  LINES TERMINATED BY '\r\n';
于 2013-09-25T20:38:31.337 回答