Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql varchar字段未正确导入_Mysql - Fatal编程技术网

mysql varchar字段未正确导入

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

我有一个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 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')进行修复。