错误:整数值不正确:将表(.csv文件)插入到MariaDB/MySQL数据库
我正在尝试将hotel表导入数据库。然而,似乎我得到了一个错误,我无法修复它花了几个小时!下面是我得到的错误:错误:整数值不正确:将表(.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
第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 FROMstaff
;然后使用ALTER tablestaff
AUTO_INCREMENT=1;来清除表,以实现相同的目的。也就是说,这是一个自动增量,即所谓的代理键。ID的存在是为了确保您有一个唯一的主键。数字本身实际上并不代表任何含义ngful,所以这个数字是1…249还是9875312对mysql来说没有任何区别(但数字越短,可能意味着键入的内容就越少)。下一期将在单独的评论中讨论。