错误:整数值不正确:将表(.csv文件)插入到MariaDB/MySQL数据库

错误:整数值不正确:将表(.csv文件)插入到MariaDB/MySQL数据库,mysql,csv,sql-insert,Mysql,Csv,Sql Insert,我正在尝试将hotel表导入数据库。然而,似乎我得到了一个错误,我无法修复它花了几个小时!下面是我得到的错误: 第1行“hotelId”列的整数值“wolfinns1”不正确 auto_increment中的第一列,但它似乎试图从cvs文件中读取,尽管那里没有条目!以下是hotels表和sql命令的记录。顺便说一下,我已将所有文件转换为Unix格式 ==== hotesls.csv ============= wolfinns1,midas1st,Fayetteville,NC,91012312

我正在尝试将hotel表导入数据库。然而,似乎我得到了一个错误,我无法修复它花了几个小时!下面是我得到的错误:

第1行“hotelId”列的整数值“wolfinns1”不正确

auto_increment中的第一列,但它似乎试图从cvs文件中读取,尽管那里没有条目!以下是hotels表和sql命令的记录。顺便说一下,我已将所有文件转换为Unix格式

==== hotesls.csv =============
wolfinns1,midas1st,Fayetteville,NC,9101231234,14
wolfinns2,midas2st,Raleigh,NC,9191231234,15
wolfinns3,midas3st,Los Angeles,CA,3101231234,16
wolfinns4,midas4st,New York,NY,2121231234,17
==========================
以下是模式:

+-----------+-----------------+------+-----+---------+------------
| Field     | Type            | Null | Key | Default | Extra   
+-----------+-----------------+------+-----+---------+------------
| hotelId   | int(9) unsigned | NO   | PRI | NULL    | auto_increment 
| name      | varchar(50)     | NO   |     | NULL    |               
| address   | varchar(75)     | NO   |     | NULL    |                
| city      | varchar(50)     | NO   |     | NULL    |                
| state     | char(2)         | NO   |     | NULL    |                
| phone     | varchar(20)     | NO   | UNI | NULL    |                
| managerId | int(9) unsigned | NO   | MUL | NULL    |        
+-----------+-----------------+------+-----+---------+------------
现在发出sql命令:

MariaDB [xzheng6]> LOAD DATA LOCAL INFILE 'hotels.csv' INTO TABLE hotels FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' STARTING BY '';
Query OK, 0 rows affected, 16 warnings (0.00 sec) 
Records: 4 Deleted: 0 Skipped: 4 Warnings: 16
这里是警告

MariaDB [xzheng6]> show warnings\g
+---------+------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Warning | 1366 | Incorrect integer value: 'wolfinns1' for column 'hotelId' at row 1 |
| Warning | 1265 | Data truncated for column 'state' at row 1 |
| Warning | 1261 | Row 1 doesn't contain data for all columns
事先非常感谢。 来自mysql的CS

默认情况下,加载结束时未提供列列表 数据填充语句,输入行应包含 每个表列。如果只想加载表的某些列, 指定列列表:

将数据填充“persondata.txt”加载到persondata表中 (列名或用户变量[,列名或用户变量]…)


因此,请提供一个不包含
hotelID
的列列表,这样就可以了

谢谢你的回复。实际上我是这样做的,但是,它给了我另一个警告,并且没有在最后一行(Ellis)之前插入行:这里是最后三行:
Moran,MNGR,MNGD,Moran St.,Raleigh,NC,91912300001985-12-13 Ellis,NNGR,MNGD,Ellis St,Los Angeles,CA,91012311111986-11-12 Abhijeet,MNGR,MNGD,Abhijeet St,New York City,NY,9191232221987-12-12
。这是我的sql命令:`LOAD DATA LOCAL infle'staff.csv'进入以“,”结尾的表格staff字段,以“\n”开头的行结尾(名称、标题代码、部门代码、地址、城市、州、电话、DOB)'还有员工ID,主键是自动递增的,不是从1开始,而是从249开始!再次感谢。我得到的错误是:
|警告| 1452 |无法添加或更新子行:外键约束失败(
xzheng6
员工
,约束
Staff\u ibfk\u 1`外键(
titleCode
)引用
job\u titles
titleCode
)| `好的,这是一个不同的文件上载,这是两个新问题。我怀疑,编号是您多次尝试加载数据并在每次尝试后删除记录的结果-这不会重置两次尝试之间的自动增量值。您需要使用TRUNCATE TABLE staff;或者,如果您没有权限,则需要使用TRUNCATE TABLE staff为此,您可以使用DELETE FROM
staff
;然后使用ALTER table
staff
AUTO_INCREMENT=1;来清除表,以实现相同的目的。也就是说,这是一个自动增量,即所谓的代理键。ID的存在是为了确保您有一个唯一的主键。数字本身实际上并不代表任何含义ngful,所以这个数字是1…249还是9875312对mysql来说没有任何区别(但数字越短,可能意味着键入的内容就越少)。下一期将在单独的评论中讨论。