- ベストアンサー
LOAD DATA INFILE での関数の扱い
お世話になります。 LOAD DATA INFILEで扱うデータでNOW()関数を持たせたいのですが、可能でしょうか? 例えば "文字列","文字列","文字列",NOW()\n "文字列","文字列","文字列",NOW()\n というカンマ区切りのデータですが、実行後、属性datetimeの値が0000-00-00 00:00:00となってしまいます。 宜しくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関数というのは、sql文内に書いて計算させる物です。 loadで読み込むデータは、文字列か数値か、または、カンマが連続すればnull とするのみです。 データの更新日を入れたいなら、カラム型をtimestampにすれば、そのカラムには何も書かなくても、データを読み込んだ日付になりますよ。 更新ではなくて、そのカラムをdatetime型としたいなら、後から、update文で変更するしかないでしょう。 とりあえずそのカラム位置には、何も書かずに読み込んでおいて、 update `tablename` set `datecolumn`=now() where `datecolumn` is null or `datecolumn` = '0000-00-00 00:00:00' load前に存在するレコードには、全て既に日付が入ってることが前提ですけど。 カラムにnot null 指定されているなら、is null の判定文は不要です。
お礼
基本的に無理だったということですね。理解しました。timestampでいこうと思います。ありがとうございました。