chunjun
chunjun copied to clipboard
纯钧执行任务时,校验数据表时使用大小写敏感的SQL语句问题
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
- [X] I agree to follow this project's Code of Conduct