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

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

ただいまの
回答率

90.03%

csvファイルをOracleDBへロードしたいのですが例外エラー発生

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 890

raccoondog

score 17

OracleDBへcsvファイルをembulkを使用してバルクインサートしたいのですが、embulk run config.yml実行時に以下のエラーが出力し失敗します。原因と解決方法を教えて頂きたいです。
作業ログは以下の通りです。

環境、Solaris 11/oracle 12c/embulk 0.9.8

srdcs04% embulk run config.yml
2018-10-30 18:06:29.447 +0900: Embulk v0.9.8
2018-10-30 18:06:30.662 +0900 [WARN] (main): DEPRECATION: JRuby org.jruby.embed.ScriptingContainer is directly injected.
2018-10-30 18:06:34.845 +0900 [INFO] (main): Gem's home and path are set by default: "/export/home/srdcs/.embulk/lib/gems"
2018-10-30 18:06:36.092 +0900 [INFO] (main): Started Embulk v0.9.8
org.embulk.config.ConfigException: OutputPlugin 'oracle' is not found.
org.jruby.proxy.org.embulk.config.ConfigException$Proxy1: Unknown output plugin 'oracle'. embulk/output/oracle.rb is not installed. Run 'embulk gem search -rd embulk-output' command to find plugins.
org.embulk.plugin.PluginManager.buildPluginNotFoundException(PluginManager.java:78)
org.embulk.plugin.PluginManager.newPluginWithoutWrapper(PluginManager.java:64)
org.embulk.plugin.PluginManager.newPlugin(PluginManager.java:31)
org.embulk.spi.ExecSession.newPlugin(ExecSession.java:148)
org.embulk.spi.Exec.newPlugin(Exec.java:63)
org.embulk.exec.BulkLoader$ProcessPluginSet.<init>(BulkLoader.java:427)
org.embulk.exec.BulkLoader.doRun(BulkLoader.java:501)
org.embulk.exec.BulkLoader.access$000(BulkLoader.java:34)
org.embulk.exec.BulkLoader$1.run(BulkLoader.java:352)
org.embulk.exec.BulkLoader$1.run(BulkLoader.java:349)
org.embulk.spi.Exec.doWith(Exec.java:22)
org.embulk.exec.BulkLoader.run(BulkLoader.java:349)
org.embulk.EmbulkEmbed.run(EmbulkEmbed.java:161)
org.embulk.EmbulkRunner.runInternal(EmbulkRunner.java:292)
org.embulk.EmbulkRunner.run(EmbulkRunner.java:156)
org.embulk.cli.EmbulkRun.runSubcommand(EmbulkRun.java:436)
org.embulk.cli.EmbulkRun.run(EmbulkRun.java:91)
org.embulk.cli.Main.main(Main.java:26)
pressed: org.embulk.plugin.PluginSourceNotMatchException
     at org.embulk.plugin.InjectedPluginSource.newPlugin(InjectedPluginSource.java:53)
     at org.embulk.plugin.PluginManager.newPluginWithoutWrapper(PluginManager.java:52)

......

Error: OutputPlugin 'oracle' is not found.
org.jruby.proxy.org.embulk.config.ConfigException$Proxy1: Unknown output plugin 'oracle'. embulk/output/oracle.rb is not installed. Run 'embulk gem search -rd embulk-output' command to find plugins.
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

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

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

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

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

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

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

embulk/output/oracle.rb is not installed

oracle.rbがインストールされてないみたいです
必要なモジュールを足してあげてください

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/31 19:57

    Error: java.lang.RuntimeException: java.sql.SQLException: No column to insert.

    No column to insertとなっているので カラムがないか指定されていないのだと思います。
    Errorと記述されている部分を重点的に攻めていくと解決にぐっと近づくと思います。

    キャンセル

  • 2018/11/01 10:25

    お世話になっております。
    カラムの指定をseed.ymlに記載し、再実行しますと上記エラーは解消されました。

    srdcs04% cat seed.yml
    in:
    type: file
    path_prefix: './output-oracle.csv'
    parser:
    charset: UTF-8
    newline: CRLF
    type: csv
    delimiter: ','
    skip_header_line: false
    columns:
    - {name: ID, type: long}
    - {name: NUM, type: string}
    - {name: STR, type: string}
    - {name: VARSTR, type: string}
    - {name: DT, type: timestamp, format: '%Y-%m-%d'}
    - {name: TIME0, type: timestamp, format: '%Y-%m-%d %H:%M:%S'}
    - {name: TIME6, type: timestamp, format: '%Y-%m-%d %H:%M:%S.%N'}
    - {name: TIME9, type: timestamp, format: '%Y-%m-%d %H:%M:%S.%N'}
    out:
    type: oracle
    host: 10.1.31.75
    port: 1533
    database: srdcsc
    user: srdcs
    password: srdcs
    table: INPUT_TEST
    mode: insert
    insert_method: normal
    driver_path: '/opt/oracle/product/12.1.0/db/jdbc/lib/ojdbc7.jar'
    column_options:
    ID: {type: long}
    NUM: {type: string}
    STR: {type: string}
    VARSTR: {type: string}
    DT: {type: timestamp}
    TIME0: {type: timestamp}
    TIME6: {type: timestamp}
    TIME9: {type: timestamp}
    srdcs04%

    次に、null値はインサート出来ない。というエラーが発生したのですがembulkのprebiewで確認しますとnull値はないように思われます。OracleDB側のテーブル構成と、Embulk側のカラム定義が食い違っているのでしょうか

    srdcs04% embulk run config.yml

    org.embulk.exec.PartialExecutionException: org.embulk.config.ConfigException: com.fasterxml.jackson.databind.JsonMappingException: Setting null to a task field is not allowed. Use Optional<T> to represent null.
    at org.embulk.exec.BulkLoader$LoaderState.buildPartialExecuteException(BulkLoader.java:339)
    at org.embulk.exec.BulkLoader.doRun(BulkLoader.java:565)
    at org.embulk.exec.BulkLoader.access$000(BulkLoader.java:34)
    at org.embulk.exec.BulkLoader$1.run(BulkLoader.java:352)
    at org.embulk.exec.BulkLoader$1.run(BulkLoader.java:349)
    at org.embulk.spi.Exec.doWith(Exec.java:22)
    at org.embulk.exec.BulkLoader.run(BulkLoader.java:349)
    at org.embulk.EmbulkEmbed.run(EmbulkEmbed.java:161)
    at org.embulk.EmbulkRunner.runInternal(EmbulkRunner.java:292)
    at org.embulk.EmbulkRunner.run(EmbulkRunner.java:156)
    at org.embulk.cli.EmbulkRun.runSubcommand(EmbulkRun.java:436)
    at org.embulk.cli.EmbulkRun.run(EmbulkRun.java:91)
    at org.embulk.cli.Main.main(Main.java:26)
    Suppressed: java.lang.NullPointerException


    srdcs04% embulk preview config.yml
    2018-11-01 09:56:08.635 +0900: Embulk v0.9.8
    2018-11-01 09:56:09.591 +0900 [WARN] (main): DEPRECATION: JRuby org.jruby.embed.ScriptingContainer is directly injected.
    2018-11-01 09:56:12.905 +0900 [INFO] (main): Gem's home and path are set by default: "/export/home/srdcs/.embulk/lib/gems"
    2018-11-01 09:56:13.906 +0900 [INFO] (main): Started Embulk v0.9.8
    2018-11-01 09:56:13.989 +0900 [INFO] (0001:preview): Listing local files at directory '.' filtering filename by prefix 'output-oracle.csv'
    2018-11-01 09:56:13.991 +0900 [INFO] (0001:preview): "follow_symlinks" is set false. Note that symbolic links to directories are skipped.
    2018-11-01 09:56:14.001 +0900 [INFO] (0001:preview): Loading files [./output-oracle.csv]
    2018-11-01 09:56:14.019 +0900 [INFO] (0001:preview): Try to read 32,768 bytes from input source
    +--------+-----------------+----------+----------+-------------------------+-------------------------+--------------------------------+-----------------------------------+
    | 1:long | :double | :string | :string | :timestamp | :timestamp | :timestamp | :timestamp |
    +--------+-----------------+----------+----------+-------------------------+-------------------------+--------------------------------+-----------------------------------+
    | 2 | 123.4 | chr1 | varchr1 | 2015-04-24 00:00:00 UTC | 2015-04-24 01:02:03 UTC | 2015-04-24 01:02:03.123450 UTC | 2015-04-24 01:02:03.123456780 UTC |
    | 3 | 1.23456789012E9 | chr12345 | varchr12 | 2015-12-31 00:00:00 UTC | 2015-12-31 23:59:59 UTC | 2015-12-31 23:59:59.123456 UTC | 2015-12-31 23:59:59.123456789 UTC |
    +--------+-----------------+----------+----------+-------------------------+-------------------------+--------------------------------+-----------------------------------+
    srdcs04%

    キャンセル

  • 2018/11/01 14:39

    自己解決致しました。

    大変お世話になりました。

    ご協力有難うございました。

    キャンセル

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

  • ただいまの回答率 90.03%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる