Mysql 加载数据填充正在跳过所有行,并且没有警告
我寻找了一个类似的问题,但我找不到一个神奇的答案……所以我希望我现在能找到一个,因为这让我发疯 我在将CSV数据导入MySQL方面做得很好,现在突然间,除了跳过的记录之外,我什么也得不到了。我应该提到的是,我一直在做大量的删除记录的工作(只是在学习MySQL和构建第一个数据库的过程中进行了实际的实验),所以我一直在剪切和更改数据,包括在Excel中进行大量的复制/粘贴,以防万一这可能会造成麻烦 这里有一个例子,我将CSV分解为2条记录:Mysql 加载数据填充正在跳过所有行,并且没有警告,mysql,load-data-infile,Mysql,Load Data Infile,我寻找了一个类似的问题,但我找不到一个神奇的答案……所以我希望我现在能找到一个,因为这让我发疯 我在将CSV数据导入MySQL方面做得很好,现在突然间,除了跳过的记录之外,我什么也得不到了。我应该提到的是,我一直在做大量的删除记录的工作(只是在学习MySQL和构建第一个数据库的过程中进行了实际的实验),所以我一直在剪切和更改数据,包括在Excel中进行大量的复制/粘贴,以防万一这可能会造成麻烦 这里有一个例子,我将CSV分解为2条记录: GENRE_NAME Classic Rock Elect
GENRE_NAME
Classic Rock
Electronica
要加载数据的查询:
LOAD DATA INFILE 'Music_All_2.csv' IGNORE INTO TABLE genres COLUMNS TERMINATED BY ',' ESCAPED BY '\\' LINES TERMINATED BY '\r' IGNORE 1 LINES (genre_name);
Query OK, 0 rows affected (0.00 sec)
Records: 2 Deleted: 0 Skipped: 2 Warnings: 0
并且该表为空(因此不会跳过它们,因为它们已经存在):
最后,这里是显示创建表类型
输出:
genres | CREATE TABLE `genres` (
`genre_pk` tinyint(2) unsigned NOT NULL AUTO_INCREMENT,
`genre_name` varchar(90) NOT NULL,
PRIMARY KEY (`genre_pk`),
UNIQUE KEY `genre_name` (`genre_name`)
) ENGINE=InnoDB AUTO_INCREMENT=255 DEFAULT CHARSET=latin1 |
提前感谢你解决了我的问题,有太多我不知道的-学习很有趣,但同时也很沮丧 我想你有两个问题 1.自动增量值 在你的DDL中
很小。所以流派pk
可以容纳0~255genre_pk
- 在CREATE语句的末尾,
AUTO_INCREMENT=255
- 这会将
的初始值设置为255genre_pk
- 这会将
行从“\r”更改为“\n”
3.总结
我已经测试了下面的SQL,它运行得很好
DDL
CREATE TABLE `genres` (
`genre_pk` tinyint(2) unsigned NOT NULL AUTO_INCREMENT,
`genre_name` varchar(90) NOT NULL,
PRIMARY KEY (`genre_pk`),
UNIQUE KEY `genre_name` (`genre_name`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
加载数据
LOAD DATA INFILE '/path/to/Music_All_2.csv'
INTO TABLE genres FIELDS TERMINATED BY ',' ESCAPED BY '\\'
LINES TERMINATED BY '\n' IGNORE 1 LINES (genre_name);
对OP评论的答复
1) 如何重置自动递增的值
- 当表中有不应删除的数据时
ALTER TABLE table_name AUTO_INCREMENT = n;
- 可以删除现有数据的时间。(这是您已经尝试过的)
2) “\n”v.s“\r”
真奇怪。一般来说,
- “\n”用于Unix系统
- “\r\n”用于Windows系统
我从未听说过马车返回的'\r'。MySQL manaul()声明
如果已在Windows系统上生成文本文件,则可能必须使用以“\r\n”结尾的行才能正确读取该文件,因为Windows程序通常使用两个字符作为行终止符。某些程序(如写字板)在写入文件时可能使用\r作为行终止符。要读取此类文件,请使用以“\r”结尾的行
我想你有两个问题
1.自动增量值
在你的DDL中
流派pk
很小。所以genre_pk
可以容纳0~255
- 在CREATE语句的末尾,
AUTO_INCREMENT=255
- 这会将
genre_pk
的初始值设置为255
2.终止于
您需要将以
结尾的行从“\r”更改为“\n”
3.总结
我已经测试了下面的SQL,它运行得很好
DDL
CREATE TABLE `genres` (
`genre_pk` tinyint(2) unsigned NOT NULL AUTO_INCREMENT,
`genre_name` varchar(90) NOT NULL,
PRIMARY KEY (`genre_pk`),
UNIQUE KEY `genre_name` (`genre_name`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
加载数据
LOAD DATA INFILE '/path/to/Music_All_2.csv'
INTO TABLE genres FIELDS TERMINATED BY ',' ESCAPED BY '\\'
LINES TERMINATED BY '\n' IGNORE 1 LINES (genre_name);
对OP评论的答复
1) 如何重置自动递增的值
- 当表中有不应删除的数据时
ALTER TABLE table_name AUTO_INCREMENT = n;
- 可以删除现有数据的时间。(这是您已经尝试过的)
2) “\n”v.s“\r”
真奇怪。一般来说,
- “\n”用于Unix系统
- “\r\n”用于Windows系统
我从未听说过马车返回的'\r'。MySQL manaul()声明
如果已在Windows系统上生成文本文件,则可能必须使用以“\r\n”结尾的行才能正确读取该文件,因为Windows程序通常使用两个字符作为行终止符。某些程序(如写字板)在写入文件时可能使用\r作为行终止符。要读取此类文件,请使用以“\r”结尾的行
太好了,谢谢你。关于我的两个问题,我应该注意到那些自动递增的数字(我有另一个表卡在65535上!):(1)我可以重置自动递增的值,而不是使字段长度变大吗?(2)当我第一次尝试在我的CSV上加载数据填充时,我使用的是\n
,但只有当我将其切换到\r
时,它才起作用-这些数据是直接从iTunes中加载的…我使用截断重置自动增量,基本上重新开始使用我的数据;但是,\n
对我来说真的不行!我用上面的2条记录(用我新重置的自动-增量)得到了这个结果:0删除:0跳过:0警告:0
。。。但是当我更改为\r
时,两条记录被成功添加。@simien我已经更新了我的答案;-)。如果我的回答对你有帮助,请随时更新我的回答。我一直在等待你关于这个讨厌的马车返回业务的答复!我在一台新的ish Mac上,使用Office for Mac 2011。而且\r\n
对我也不起作用(与\n
相同的非结果)。这太好了,谢谢。关于我的两个问题,我应该注意到那些自动递增的数字(我有另一个表卡在65535上!):(1)我可以重置自动递增的值,而不是使字段长度变大吗?(2)当我第一次尝试在我的CSV上加载数据填充时,我使用的是\n
,但只有当我将其切换到\r
时,它才起作用-这些数据是直接从iTunes中加载的…我使用截断重置自动增量,基本上重新开始使用我的数据;但是,\n
对我来说真的不行!我用上面的2条记录(用我新重置的自动-增量)得到了这个结果:0删除:0跳过:0警告:0
。。。但是当我更改为\r
时,两条记录被成功添加。@simien我已经更新了我的答案;-)。如果我的回答对你有帮助,请随时更新我的回答。我一直在等待你关于这个讨厌的马车返回业务的答复!我在一台新的ish Mac上,使用Office for Mac 2011。而且\r\n
对我也不起作用(与\n
相同的非结果)