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

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

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

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

Q&A

解決済

1回答

1322閲覧

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

nyonyosuke

総合スコア73

Embulk

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

0グッド

0クリップ

投稿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 | +--------------+-----------+------+-----+-------------------+-----------------------------+

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

column_options: inserted_at: {type: 'timestamp default current_timestamp'}

上記で解決しました

投稿2022/03/10 03:00

nyonyosuke

総合スコア73

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問