Mysql 加载数据填充正在跳过所有行,并且没有警告

Mysql 加载数据填充正在跳过所有行,并且没有警告,mysql,load-data-infile,Mysql,Load Data Infile,我寻找了一个类似的问题,但我找不到一个神奇的答案……所以我希望我现在能找到一个,因为这让我发疯 我在将CSV数据导入MySQL方面做得很好,现在突然间,除了跳过的记录之外,我什么也得不到了。我应该提到的是,我一直在做大量的删除记录的工作(只是在学习MySQL和构建第一个数据库的过程中进行了实际的实验),所以我一直在剪切和更改数据,包括在Excel中进行大量的复制/粘贴,以防万一这可能会造成麻烦 这里有一个例子,我将CSV分解为2条记录: GENRE_NAME Classic Rock Elect

我寻找了一个类似的问题,但我找不到一个神奇的答案……所以我希望我现在能找到一个,因为这让我发疯

我在将CSV数据导入MySQL方面做得很好,现在突然间,除了跳过的记录之外,我什么也得不到了。我应该提到的是,我一直在做大量的删除记录的工作(只是在学习MySQL和构建第一个数据库的过程中进行了实际的实验),所以我一直在剪切和更改数据,包括在Excel中进行大量的复制/粘贴,以防万一这可能会造成麻烦

这里有一个例子,我将CSV分解为2条记录:

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
    很小。所以
    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”结尾的行


我想你有两个问题

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
相同的非结果)