質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Embulk

Embulkは、CSVデータやアクセスログなどの構造化データを高い信頼性で転送することができる、プラグインベースのバルクデータローダーです。

解決済

embulkでtimestampのカラムにデータを挿入する

nyonyosuke
nyonyosuke

総合スコア63

Embulk

Embulkは、CSVデータやアクセスログなどの構造化データを高い信頼性で転送することができる、プラグインベースのバルクデータローダーです。

1回答

0評価

0クリップ

297閲覧

投稿2022/03/09 09:18

embulkを使ってMySQL→MySQLへデータを移行しようとしています。
template/_in.yaml.liquid

in: type: mysql database: sourcedb user: root password: pass host: mysql01 port: 3306 table: map_faculty_to_class options: {characterEncoding: UTF-8} socket_timeout: 30 select: '*' query: null columns: null parser: {type: json} filters: - type: column add_columns: - {name: id, src: faculty_id} - {name: course_order, src: class_order} - {name: inserted_at, type: timestamp, default: '2022-01-01 00:00:00', format: '%Y-%m-%d %H:%M:%s'} - type: column drop_columns: - {name: faculty_id} - {name: class_order} - {name: id} - type: eval eval_columns: - {inserted_at: Time.now} out: {type: mysql, database: swingdb, user: root, password: pass, host: mysql02, port: 3306, table: course_classes, select: '*', mode: insert, after_load: null}

previewの結果は

+---------------+-----------------+----------------+-------------------------+-------------------------+-------------------+--------------------------------+ | class_id:long | section_id:long | course_id:long | regist_date:timestamp | update_date:timestamp | course_order:long | inserted_at:timestamp | +---------------+-----------------+----------------+-------------------------+-------------------------+-------------------+--------------------------------+ | 1 | 2 | 4 | 2018-06-11 07:34:57 UTC | 2018-06-11 07:34:57 UTC | 3 | 2022-03-09 09:13:21.362026 UTC | | 3 | 4 | 6 | 2018-06-11 07:34:57 UTC | 2018-06-11 07:34:57 UTC | 5 | 2022-03-09 09:13:21.362978 UTC | +---------------+-----------------+----------------+-------------------------+-------------------------+-------------------+--------------------------------+

このようになっていますが、実行すると下記のようになります。

Error: java.lang.RuntimeException: org.embulk.util.retryhelper.RetryGiveupException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Invalid default value for 'inserted_at'

送出先のテーブルの構成は下記のとおりです。inserted_atのtimestampの形式が違うのかと思っていますが
変更方法がわかりません。
おそらく下記の部分とは思っておりますが、こちらの変更方法をご教示いただけますでしょうか

- type: eval eval_columns: - {inserted_at: Time.now}
+--------------+-----------+------+-----+-------------------+-----------------------------+ | Field | Type | Null | Key | Default | Extra | +--------------+-----------+------+-----+-------------------+-----------------------------+ | id | int(11) | YES | | NULL | | | course_id | int(11) | YES | | NULL | | | class_id | int(11) | YES | | NULL | | | class_order | int(11) | YES | | NULL | | | course_order | int(11) | YES | | NULL | | | regist_date | datetime | YES | | NULL | | | update_date | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | | inserted_at | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | +--------------+-----------+------+-----+-------------------+-----------------------------+

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Embulk

Embulkは、CSVデータやアクセスログなどの構造化データを高い信頼性で転送することができる、プラグインベースのバルクデータローダーです。