0

我正在尝试在 MYSQL 中创建一个电影数据库(我使用 MYSQL 工作台)。

我使用 TxtToMy (link)将 imdb.com 生成的 rating.csv 文件导入 MYSQL。

现在的问题是无法导入 16 部电影(共 819 部电影),因为“date_released”的格式不正确。

此错误显示在日志中:

(#22007) 不正确的日期值:第 1 行的列“release_date”的“1983-05”

现在我想知道是否有办法更改 MYSQL 中的表以自动将格式为 YYYY-MM 的任何日期更改为 YYYY-MM-DD ,其中 DD 为 00 或其他东西。或者这样也接受不同格式的日期。

4

1 回答 1

0

我不太TxtToMy清楚,但是如果您必须使用它,并且如果它不允许您实现像上面提出的 didierc 这样的解决方案,那么一种选择是添加一个 VARCHAR 列来导入原始日期并使用更新“真实”日期列的触发器。

假设您的表名为MOVIES...

ALTER TABLE MOVIES ADD (RawDateFromIMDB VARCHAR(10));

然后将您的TxtToMy定义更改为 import intoRawDateFromIMDB而不是release_date.

此触发器将获取原始日期并使用它来更新您的release_date列:

CREATE TRIGGER Movie_RawDateParse
  BEFORE INSERT ON Movies
  FOR EACH ROW
BEGIN
  SET NEW.release_date = str_to_date(NEW.RawDateFromIMDB, '%Y-%m-%d');
END;

MySQL 似乎非常高兴有一个像 '1983-05-00' 这样的日期,所以当我将值“导入”1983-05RawDateFromIMDB. 它也适用于“常规”日期,如下所示:

mysql> INSERT INTO Movies (RawDateFromIMDB) values ('1983-05');
Query OK, 1 row affected (0.03 sec)

mysql> INSERT INTO Movies (RawDateFromIMDB) values ('1983-06-22');
Query OK, 1 row affected (0.04 sec)

mysql> SELECT release_date, RawDateFromIMDB FROM Movies;
+--------------+-----------------+
| release_date | RawDateFromIMDB |
+--------------+-----------------+
| 1983-05-00   | 1983-05         |
| 1983-06-22   | 1983-06-22      |
+--------------+-----------------+
2 rows in set (0.00 sec)
于 2013-03-25T20:02:46.567 回答