0

MYSQLでムービーデータベースを作成しようとしています(MYSQLワークベンチを使用しています)。

TxtToMy (リンク)を使用して、imdb.comによって生成されたratings.csvファイルをMYSQLにインポートします。

ここで問題となるのは、「date_released」が正しい形式ではないため、16本の映画(819本のうち)をインポートできないことです。

このエラーはログに表示されます。

(#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にインポートします。RawDateFromIMDBrelease_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-05をに「インポート」したときに、これはうまくいきましRawDateFromIMDBた。以下に示すように、「通常の」日付でも機能しました。

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 に答える