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

问题描述 投票:0回答:1

我正在尝试将酒店表导入数据库。但是,似乎我得到一个错误,我无法修复它花费数小时!这是我得到的错误:

Incorrect integer value: 'wolfinns1' for column 'hotelId' at row 1

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

非常感谢你提前。 CS

mysql csv sql-insert
1个回答
1
投票

来自mysql documentation

默认情况下,如果在LOAD DATA INFILE语句末尾没有提供列列表,则输入行应包含每个表列的字段。如果只想加载某些表的列,请指定列列表:

LOAD DATA INFILE'persondata.txt'INTO TABLE persondata(col_name_or_user_var [,col_name_or_user_var] ...);

因此,提供一个不包含hotelID的列列表,你应该没问题。

© www.soinside.com 2019 - 2024. All rights reserved.