• ベストアンサー

LOAD DATA INFILE での関数の扱い

お世話になります。 LOAD DATA INFILEで扱うデータでNOW()関数を持たせたいのですが、可能でしょうか? 例えば "文字列","文字列","文字列",NOW()\n "文字列","文字列","文字列",NOW()\n というカンマ区切りのデータですが、実行後、属性datetimeの値が0000-00-00 00:00:00となってしまいます。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.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 の判定文は不要です。

briantaphy
質問者

お礼

基本的に無理だったということですね。理解しました。timestampでいこうと思います。ありがとうございました。