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

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

ただいまの
回答率

90.32%

embulkのqueryオプションにつきまして

解決済

回答 3

投稿 編集

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

raccoondog

score 17

■環境
Oracle 12.1.0、embulk 1.9.15、solaris 11

特定条件で、oracleのデータをbigqueryへインサートしたいです。
Oracleのsqlplusからは成功するのですが、em bulkからでは失敗します。

SQL> select * from T_RS_TRAN where IF_FLAG = '1' and TO_DATE(TRAN_DATE) >= '26-FEB-19' and TO_DATE(TRAN_DATE) <= '27-FEB-19';

  ORDER_NO R FACT ORG TRAN_DATE    HINBAN                                       
---------- - ---- --- ------------ ----------------------------------------     
       QTY SLIP_NO    IT DIVISION_NO FROM FRO FROM_SUBIN FROM_VALUE_CODE        
---------- ---------- -- ----------- ---- --- ---------- ---------------        
FROM_OPERATOR_NAME               TO_F TO_ TO_SUBINV_ TO_VALUE_CODE              
-------------------------------- ---- --- ---------- ---------------            
TO_OPERATOR_NAME                 SU C ACT_CREATION WH_ACT_CREAT JO UNIT_PRICE E 
-------------------------------- -- - ------------ ------------ -- ---------- - 
DESCRIPTION                                                            LOCATION 
---------------------------------------------------------------------- -------- 
REV OPE_COD BOX_KIND             DEMAND_N     SUB_NO TRAF I S SOURCE_ORDER_NO   
--- ------- -------------------- -------- ---------- ---- - - ---------------   
FT_DEFINE_ID FROM_SELL_BUY_ID TO_SELL_BUY_ID CREATION_DAT                       
------------ ---------------- -------------- ------------                       
CREATED_BY                       LAST_UPDATE_ LAST_UPDATED_BY                   
-------------------------------- ------------ --------------------------------  
UPDATE_REQUEST_ID                                                               
-----------------                                                               
TIME_STAMP                                                                  I   
--------------------------------------------------------------------------- -   
ISSUE_SEQ   SOUMEI_ID G GCPCS_IF_CRE RECIE DELI DELIV_NO             RECV_ SU   
---------- ---------- - ------------ ----- ---- -------------------- ----- --   
SHIP_DATE    C_ T_ RECV S SR_IF_CREATI P PS_IF_CREATI CUSTO K SUPPLY_SEC        
------------ -- -- ---- - ------------ - ------------ ----- - ----------        
MANAGE_NO  SEND SOUM SO PS_YAZAKI_HINBAN                                        
---------- ---- ---- -- ----------------------------------------                
INVOICE_CASE_INFO_NO GYK    CASE_NO CASE_SUB_NO FROM_LOCATION   TO_LOCATION     
-------------------- --- ---------- ----------- --------------- --------------- 
GY I                                                                            
-- -                                                                            
   7764062 1 7200 S5B 26-FEB-19    TEST                                         

・
・
・
・
・


27 rows selected.



■embulkで実行した場合
embulk preview config_T_RS_TRAN_split.yml
2019-04-11 11:14:02.756 +0900: Embulk v0.9.15
2019-04-11 11:14:03.236 +0900 [WARN] (main): DEPRECATION: JRuby org.jruby.embed.ScriptingContainer is directly injected.
2019-04-11 11:14:05.998 +0900 [INFO] (main): Gem's home and path are set by default: "/export/home/srdcs/.embulk/lib/gems"
2019-04-11 11:14:06.812 +0900 [INFO] (main): Started Embulk v0.9.15
2019-04-11 11:14:06.888 +0900 [INFO] (0001:preview): Loaded plugin embulk-input-oracle (0.9.3)
2019-04-11 11:14:06.929 +0900 [INFO] (0001:preview): Connecting to jdbc:oracle:thin:@srdcs04:1521:srdcsc options {oracle.jdbc.ReadTimeout=1800000, user=srdcs, password=***, oracle.net.CONNECT_TIMEOUT=300000}
2019-04-11 11:14:07.497 +0900 [INFO] (0001:preview): Using JDBC Driver 12.1.0.2.0
2019-04-11 11:14:07.818 +0900 [INFO] (0001:preview): Connecting to jdbc:oracle:thin:@srdcs04:1521:srdcsc options {oracle.jdbc.ReadTimeout=1800000, user=srdcs, password=***, oracle.net.CONNECT_TIMEOUT=300000}
2019-04-11 11:14:08.056 +0900 [INFO] (0001:preview): SQL: select * from T_RS_TRAN where IF_FLAG = '1' and TO_DATE(TRAN_DATE) >= '26-FEB-19' and TO_DATE(TRAN_DATE) <= '27-FEB-19'
java.lang.RuntimeException: java.sql.SQLDataException: ORA-01858: 数値を指定する箇所に数値以外の文字が指定されています

        at com.google.common.base.Throwables.propagate(Throwables.java:160)
        at org.embulk.input.jdbc.AbstractJdbcInputPlugin.run(AbstractJdbcInputPlugin.java:509)
        at org.embulk.exec.PreviewExecutor$2$1.run(PreviewExecutor.java:131)
        at org.embulk.spi.util.Filters$RecursiveControl.transaction(Filters.java:84)
        at org.embulk.spi.util.Filters.transaction(Filters.java:42)
        at org.embulk.exec.PreviewExecutor$2.run(PreviewExecutor.java:121)
        at org.embulk.input.jdbc.AbstractJdbcInputPlugin.transaction(AbstractJdbcInputPlugin.java:206)
        at org.embulk.exec.PreviewExecutor.doPreview(PreviewExecutor.java:119)
        at org.embulk.exec.PreviewExecutor.doPreview(PreviewExecutor.java:107)
        at org.embulk.exec.PreviewExecutor.access$000(PreviewExecutor.java:30)
        at org.embulk.exec.PreviewExecutor$1.run(PreviewExecutor.java:74)
        at org.embulk.exec.PreviewExecutor$1.run(PreviewExecutor.java:71)
        at org.embulk.spi.Exec.doWith(Exec.java:22)
        at org.embulk.exec.PreviewExecutor.preview(PreviewExecutor.java:71)
        at org.embulk.EmbulkEmbed.preview(EmbulkEmbed.java:168)
        at org.embulk.EmbulkRunner.previewInternal(EmbulkRunner.java:215)
        at org.embulk.EmbulkRunner.preview(EmbulkRunner.java:107)
        at org.embulk.cli.EmbulkRun.runSubcommand(EmbulkRun.java:433)
        at org.embulk.cli.EmbulkRun.run(EmbulkRun.java:91)
        at org.embulk.cli.Main.main(Main.java:64)
Caused by: java.sql.SQLDataException: ORA-01858: 数値を指定する箇所に数値以外の文字が指定されています

        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399)
        at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059)
        at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522)
        at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
        at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:587)
        at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:225)
        at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:53)
        at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:774)
        at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:925)
        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1104)
        at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:4798)
        at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:4845)
        at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1501)
        at org.embulk.input.jdbc.JdbcInputConnection$SingleSelect.fetch(JdbcInputConnection.java:194)
        at org.embulk.input.jdbc.AbstractJdbcInputPlugin.fetch(AbstractJdbcInputPlugin.java:571)
        at org.embulk.input.jdbc.AbstractJdbcInputPlugin.run(AbstractJdbcInputPlugin.java:480)
        ... 18 more

Error: java.sql.SQLDataException: ORA-01858: 数値を指定する箇所に数値以外の文字が指定されています

■定義ファイル
srdcs04% cat config_T_RS_TRAN_split.yml
in:
  type: oracle
  path_prefix: null
  driver_path: /opt/oracle/product/12.1.0/db/jdbc/lib/ojdbc7.jar
  host: srdcs04
  user: srdcs
  password: srdcs
  database: srdcsc
  query: select * from T_RS_TRAN where IF_FLAG = '1' and TO_DATE(TRAN_DATE) >= '26-FEB-19' and TO_DATE(TRAN_DATE) <= '27-FEB-19'

out: {type: bigquery, auth_method: json_key, json_keyfile: '/home1/bigquery/conf/My First Project-6041ffecfba7.json', project: fluid-emissary-216806, dataset: embulk_test, auto_create_table: true, table: T_RS_TRAN_split_001, open_read_timeout_sec: 360000, send_timeout_sec: 360000, read_timeout_sec: 360000}
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 3

+1

Oracleは詳しくないですが、TO_DATEのフォーマットを指定してみてはいかがでしょうか?
https://taityo-diary.hatenablog.jp/entry/2014/11/04/070450

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/04/11 18:15

    ご指摘有難うございます。

    キャンセル

+1

何度も何度も何度も何度も書いていますが、SQLで使っているテーブルのCREATE TABLE は質問に載せてください。
TRAN_DATE はDATE型ではありませんか?

日時書式モデル をきちんと読んだことはありますか?

SQL> ALTER SESSION SET NLS_LANGUAGE = AMERICAN ;

Session altered.

SQL> SELECT TO_CHAR(SYSDATE, 'DD-MON-YY') AS DATE1 FROM DUAL ;

DATE1
-----------------------------
11-APR-19

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/04/11 18:15

    ご指摘有難うございます。

    キャンセル

  • 2019/04/11 18:29

    命の限りCREATE TABLE文を載せる気はない、と。

    キャンセル

check解決した方法

0

query: select * from T_RS_TRAN where IF_FLAG = '1' and TO_DATE(TRAN_DATE) >= TO_DATE('20190226','yyyyMMdd') and TO_DATE(TRAN_DATE) <= TO_DATE('20190227','yyyyMMdd')

上記クエリで成功しました。
ご指摘有難うございました。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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

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