MySQL CSV 导入失败 - "Data too long for column 'air_date' at row 1"
MySQL CSV Import Fails - "Data too long for column 'air_date' at row 1"
我正在尝试将 CSV 文件导入到 MySQL table 中,但我遇到了各种问题,无法让它正常工作。这是我正在尝试做的事情:
我正在处理一个视频数据库,并且有一个现有的 table,其中已经包含名为剧集的数据。设置方法如下:
+--------------+-----------------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-----------------------+------+-----+-------------------+-----------------------------+
| title | varchar(40) | NO | MUL | NULL | |
| media_id | varchar(11) | NO | | NULL | |
| ep_info | varchar(75) | YES | | NULL | |
| air_date | varchar(20) | NO | | NULL | |
| trt | varchar(8) | NO | | NULL | |
| times_played | mediumint(9) unsigned | NO | | 0 | |
| last_played | timestamp | YES | | NULL | |
| entered | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| ep_desc | varchar(300) | NO | | NULL | |
+--------------+-----------------------+------+-----+-------------------+-----------------------------+
主键是 id 字段,title 字段设置为节目的外键 table。节目 table 看起来像这样:
+-------------+-------------+------+-----+------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+------------+-------+
| title | varchar(50) | NO | PRI | NULL | |
| title_image | varchar(50) | NO | | NULL | |
| gif_image | varchar(50) | NO | | NULL | |
| info_url | varchar(30) | NO | | shows.html | |
+-------------+-------------+------+-----+------------+-------+
我的 CSV 文件格式如下:
"Big Wolf On Campus","BWOC0102","Season 1 Episode 2: The Bookmobile","April 9, 1999";"21:57",NULL,NULL,NULL,NULL,"Once every 70 years, a window of transference opens that offers Tommy a chance to pass his curse to another person. Merton volunteers but that same day a bookmobile shows up in Pleasantville and people start disappearing."
"Big Wolf On Campus","BWOC0103","Season 1 Episode 3: Butch Comes To Shove","April 16, 1999","21:06",NULL,NULL,NULL,NULL,"When a character from a 1950s educational film gets sick of the rules he decides to leave the movie for Pleasantville. While there Butch decides to find someone to bring back to his black-and-white world - and Stacey is at the top of his list."
在导入过程中,我希望将 CSV 中的数据添加到 table 中的现有数据中。我还希望 last_played 字段设置为 NULL(仅在节目播放时更新),输入的字段设置当前时间戳,以及 id 字段 auto_incremented 和 [=41= 的下一个值].
这是我的导入语句:
LOAD DATA INFILE 'ytv.csv' INTO TABLE episodes
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
产生的错误信息:
ERROR 1406 (22001): Data too long for column 'air_date' at row 1
我在这里做错了什么?似乎数据在导入时在一列上移动(例如 CSV 中的 ep_info 进入 air_date 列)但我不明白为什么。对于这个 MySQL 新手,任何见解都将不胜感激。
您似乎有一些新剧集在节目中没有映射条目 table。您可以创建一个新的 table 类似的剧集,删除任何约束,将数据加载到新的 table,将所有缺失的节目标题插入您的节目 table,然后从新的 table 中插入剧集=14=] 到剧集 table。
或者你可以删除外键,加载数据,修改你的显示table,然后再添加外键。
我正在尝试将 CSV 文件导入到 MySQL table 中,但我遇到了各种问题,无法让它正常工作。这是我正在尝试做的事情:
我正在处理一个视频数据库,并且有一个现有的 table,其中已经包含名为剧集的数据。设置方法如下:
+--------------+-----------------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-----------------------+------+-----+-------------------+-----------------------------+
| title | varchar(40) | NO | MUL | NULL | |
| media_id | varchar(11) | NO | | NULL | |
| ep_info | varchar(75) | YES | | NULL | |
| air_date | varchar(20) | NO | | NULL | |
| trt | varchar(8) | NO | | NULL | |
| times_played | mediumint(9) unsigned | NO | | 0 | |
| last_played | timestamp | YES | | NULL | |
| entered | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| ep_desc | varchar(300) | NO | | NULL | |
+--------------+-----------------------+------+-----+-------------------+-----------------------------+
主键是 id 字段,title 字段设置为节目的外键 table。节目 table 看起来像这样:
+-------------+-------------+------+-----+------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+------------+-------+
| title | varchar(50) | NO | PRI | NULL | |
| title_image | varchar(50) | NO | | NULL | |
| gif_image | varchar(50) | NO | | NULL | |
| info_url | varchar(30) | NO | | shows.html | |
+-------------+-------------+------+-----+------------+-------+
我的 CSV 文件格式如下:
"Big Wolf On Campus","BWOC0102","Season 1 Episode 2: The Bookmobile","April 9, 1999";"21:57",NULL,NULL,NULL,NULL,"Once every 70 years, a window of transference opens that offers Tommy a chance to pass his curse to another person. Merton volunteers but that same day a bookmobile shows up in Pleasantville and people start disappearing."
"Big Wolf On Campus","BWOC0103","Season 1 Episode 3: Butch Comes To Shove","April 16, 1999","21:06",NULL,NULL,NULL,NULL,"When a character from a 1950s educational film gets sick of the rules he decides to leave the movie for Pleasantville. While there Butch decides to find someone to bring back to his black-and-white world - and Stacey is at the top of his list."
在导入过程中,我希望将 CSV 中的数据添加到 table 中的现有数据中。我还希望 last_played 字段设置为 NULL(仅在节目播放时更新),输入的字段设置当前时间戳,以及 id 字段 auto_incremented 和 [=41= 的下一个值].
这是我的导入语句:
LOAD DATA INFILE 'ytv.csv' INTO TABLE episodes
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
产生的错误信息:
ERROR 1406 (22001): Data too long for column 'air_date' at row 1
我在这里做错了什么?似乎数据在导入时在一列上移动(例如 CSV 中的 ep_info 进入 air_date 列)但我不明白为什么。对于这个 MySQL 新手,任何见解都将不胜感激。
您似乎有一些新剧集在节目中没有映射条目 table。您可以创建一个新的 table 类似的剧集,删除任何约束,将数据加载到新的 table,将所有缺失的节目标题插入您的节目 table,然后从新的 table 中插入剧集=14=] 到剧集 table。
或者你可以删除外键,加载数据,修改你的显示table,然后再添加外键。