chunjun icon indicating copy to clipboard operation
chunjun copied to clipboard

纯钧执行任务时,校验数据表时使用大小写敏感的SQL语句问题

Open IKaneryI opened this issue 2 years ago • 0 comments

Search before asking

  • [X] I had searched in the issues and found no similar question.

  • [X] I had googled my question but i didn't get any help.

  • [X] I had read the documentation: ChunJun doc but it didn't help me.

Description

我新建了一个sql任务,如下:

CREATE TABLE SYS_USER (
    ID_ varchar,
    USERNAME varchar,
    FULLNAME varchar,
    PROCTIME AS PROCTIME()
) WITH (
    'connector' = 'oracle-x',
    'url' = 'jdbc:oracle:thin:@//127.0.0.1:1521/ipmsfs',
    'table-name' = 'SYS_USER',
    'schema' = 'sysmetakeeper',
    'username' = 'sysmetakeeper',
    'password' = '***'
);

CREATE TABLE SYS_USERPOST (USER_ID varchar, POST_ID varchar) WITH (
    'connector' = 'oracle-x',
    'url' = 'jdbc:oracle:thin:@//127.0.0.1:1521/ipmsfs',
    'table-name' = 'SYS_USERPOST',
    'schema' = 'sysmetakeeper',
    'username' = 'sysmetakeeper',
    'password' = '***'
);

CREATE TABLE SYS_POST (ID_ varchar, CODE_ varchar, NAME_ varchar) WITH (
    'connector' = 'oracle-x',
    'url' = 'jdbc:oracle:thin:@//127.0.0.1:1521/ipmsfs',
    'table-name' = 'SYS_POST',
    'schema' = 'sysmetakeeper',
    'username' = 'sysmetakeeper',
    'password' = '***'
);

CREATE TEMPORARY VIEW view_out AS
SELECT
    SYS_USER.ID_,
    SYS_USER.USERNAME,
    SYS_USER.FULLNAME,
    SYS_POST.CODE_,
    SYS_POST.NAME_
FROM
    SYS_USER
    INNER JOIN SYS_USERPOST FOR SYSTEM_TIME AS OF SYS_USER.PROCTIME ON SYS_USER.ID_ = SYS_USERPOST.USER_ID
    INNER JOIN SYS_POST FOR SYSTEM_TIME AS OF SYS_USER.PROCTIME ON SYS_USERPOST.POST_ID = SYS_POST.ID_
WHERE
    SYS_USER.USERNAME IS NOT NULL;

CREATE TABLE sys_user_with_post_a099 (
    id varchar,
    username varchar,
    fullname varchar,
    post_code varchar,
    post_name varchar
) WITH (
    'connector' = 'postgresql-x',
    'url' = 'jdbc:postgresql://127.0.0.1:5432/testDB?reWriteBatchedInserts=true',
    'table-name' = 'sys_user_with_post_a099',
    'schema' = 'ningbo',
    'username' = 'ningbo',
    'password' = '***'
);

INSERT INTO
    sys_user_with_post_a099
SELECT
    *
FROM
    view_out;

纯钧在校验字段、表是否存在时使用的sql语句会给字段名、表名、schema加上引号,以至于查询数据库时会大小写敏感。 报错如下:

java.lang.IllegalArgumentException: open() failed.ORA-00942: 表或视图不存在

 querySQL: SELECT "ID_", "USERNAME", "FULLNAME" FROM "sysmetakeeper"."SYS_USER" WHERE  1=1
        at com.dtstack.chunjun.connector.jdbc.source.JdbcInputFormat.openInternal(JdbcInputFormat.java:121) ~[chunjun-connector-oracle.jar:?]
        at com.dtstack.chunjun.source.format.BaseRichInputFormat.open(BaseRichInputFormat.java:162) ~[chunjun-clients.jar:?]
        at com.dtstack.chunjun.source.DtInputFormatSourceFunction.run(DtInputFormatSourceFunction.java:126) ~[chunjun-clients.jar:?]
        at org.apache.flink.streaming.api.operators.StreamSource.run(StreamSource.java:110) ~[chunjun-clients.jar:?]
        at org.apache.flink.streaming.api.operators.StreamSource.run(StreamSource.java:66) ~[chunjun-clients.jar:?]
        at org.apache.flink.streaming.runtime.tasks.SourceStreamTask$LegacySourceFunctionThread.run(SourceStreamTask.java:267) ~[chunjun-clients.jar:?]
Caused by: java.sql.SQLSyntaxErrorException: ORA-00942: 表或视图不存在

有没有办法能避免纯钧用大小写敏感的查询sql语句?有没有好的解决办法?

Code of Conduct

IKaneryI avatar Nov 10 '23 08:11 IKaneryI