エラー
Caused by: org.embulk.spi.time.TimestampParseException: text is null or empty string.
Error: org.embulk.spi.DataException: Invalid record at xxxxxxxx原因
転送元(CSV)で timestamp 型として定義されているカラムの中に、空文字が含まれていることが原因です。
Embulk の仕様上、timestamp 型は空文字を許容できず、パースエラーが発生します。
対処法
エラーの解消方法は2種類あります。
空文字を NULL に置換して転送する
- 転送設定STEP2の入力オプションタブ内にある「NULLに置換される文字列」にて「設定する」を選択する
- 「置換元の文字列」は空欄(何も入力しない)にする
データ型を string に変更して転送する
- 転送設定STEP2のカラム定義にて、エラーが発生している
timestamp型のカラムのデータ型をstringに変更する - 「変更をプレビュー」を実行し転送元の設定へ反映する
なお、対象カラムがすでにカラム定義から削除されている場合でも、内部設定には転送元のカラム情報が残っているため、カラムを削除しただけではエラーが解消されません。以下の手順にて転送元のカラム情報に変更の反映が必要です。
転送設定STEP2のカラム定義内「カラムを追加」から削除した該当のカラムを追加して、データ型を
stringに設定する「変更をプレビュー」を実行する
転送対象外とするカラムをカラム定義から削除する
再度「変更をプレビュー」を実行し、転送するカラムのみが抽出されていることを確認する
STEP3へ進み、YAML設定ファイル内の
transfer_option>in>parser>columnsを確認し、該当のカラムのデータ型がstringになっていることを確認する
もし、修正の必要なカラムが複数ある、かつ転送先がファイル系コネクタなどでデータ型を指定する必要がない場合は、以下の手順で全てのカラムのデータ型を string に設定する方法もあります。
転送設定STEP2に遷移する際、「自動データ設定」を実行して最新の転送元の情報(カラム名とデータ型)を反映させる
STEP2の「カラム定義」にて、全カラムを選択し、一括変換メニューから「STRING型に変換」を選択する※ 全てを一旦
string型にすることで、予期せぬパースエラーを確実に防ぐ「変更をプレビュー」を実行する
転送対象外とするカラムをカラム定義から削除する
再度「変更をプレビュー」を実行し、転送するカラムのみが抽出されていることを確認する
STEP3へ進み、YAML設定ファイル内の
transfer_option>in>parser>columnsを確認し、カラムのデータ型がすべてstringになっていることを確認する
コメント
0件のコメント
記事コメントは受け付けていません。