mysql varchar字段未正确导入
我有一个csv(500kb)文件,其中包含以下格式的条目:mysql varchar字段未正确导入,mysql,Mysql,我有一个csv(500kb)文件,其中包含以下格式的条目: 16037549,poetry 598195,historical fiction 22466716,poetry “我的表”是使用以下命令生成的: CREATE TABLE `genre` ( `book_id` int(11), `genre` varchar(200) ) csv文件通过以下load命令加载: LOAD DATA local infile '...' into table genre characte
16037549,poetry
598195,historical fiction
22466716,poetry
“我的表”是使用以下命令生成的:
CREATE TABLE `genre` (
`book_id` int(11),
`genre` varchar(200)
)
csv文件通过以下load
命令加载:
LOAD DATA local infile '...' into table genre character set 'utf8mb4' fields terminated by ',' optionally enclosed by '\"' escaped by '\"';
问题是导入后未正确解释类型
字段。我不能像下面这样做字符串匹配。查询结果为空集
SELECT * from genre where genre = 'poetry';
但是,以下操作将返回所需的结果:
SELECT * from genre where genre like 'poetry%';
在导入过程中,字符串周围似乎有一些东西被添加到字段中。我确信类型
字段和图书id
字段都在create表设置的大小范围内。我在另一个文件中遇到同样的问题。这两个字段都位于行的末尾
如果我只从较大的csv导入包含10行数据的较小文件,则不存在此问题
我不知道如何调试这个问题。有没有更好的方法导入csv或任何调试提示
上下文:我想将文件上载到gcp,导入语句是cloud sql接受的格式。事实证明这是一个行终止问题。如果要上传到云sql,需要将csv转换为linux文件。其中一种方法是使用sed:
sed -e "s/\r//g" file > newfile
在数据中使用逗号作为分隔符,mysql无法检测到它,您需要一个新的字段分隔符,或者在数据中使用逗号。文本文件中的行末尾可能有尾随空格。请尝试使用
更新流派集genre=TRIM(从流派开始跟踪)
进行修复。它可能是leach行末尾的一个字符(可能是\r
?)。可以使用命令终止的“行来解决此问题。正如文档所述:“对于在Windows系统上生成的文本文件,正确的文件读取可能需要行以“\r\n”终止,因为Windows程序通常使用两个字符作为行终止符。”---如果您已经加载了文件,请使用UPDATE-genre SET-genre=TRIM(从genre中拖尾'\r')进行修复。