私はCSVファイルから作成する予定のテーブルを持っています。ファイルには22列が含まれ、表には24が含まれています。相違点は列リストの末尾にcreated_at
とupdated_at
フィールドです。LOAD DATA INFILEデータにcreated_atとupdated_atを追加する
実際に起こりたいのは、各レコードを作成し、最後の2列をデフォルトにすることです。
ので、同様に、私は列を追加しました:
ALTER TABLE mytable
ADD created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
ADD updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
;
マイローダースクリプトは次のようになります。
LOAD DATA LOCAL INFILE '/tmp/my.csv'
REPLACE INTO TABLE mytable
CHARACTER SET utf8
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
IGNORE 1 LINES
;
私が好きな何か、もちろん、取得するcreated_at
とupdated_at
値のためであります新しいレコードが挿入されたときに設定されます。レコードが交換された場合は、updated_at
の値を置き換える必要がありますか?
可能ですか?私はMariaDB 10.0.26を使用しており、両方の日付は常に0000-00-00 00:00:00
という値で作成されています。おそらく、
'TIMESTAMP'の' DEFAULT'の正確な規則を確認してください。彼らはバージョンを変更しました。 –
'ENGINE = InnoDB'ですか? –
@RickJames:ええ、私は正しい場所から読んでいて、適切なバージョンを用意しています。私はいくつかのニュアンスが欠けていると思っています(または見た目は分かりませんが)。まだ見つけられていません。 –