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,然后再添加外键。