import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.java.DataSet;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.java.io.jdbc.JDBCInputFormat;
import org.apache.flink.api.java.operators.DataSource;
import org.apache.flink.api.java.typeutils.RowTypeInfo;
import org.apache.flink.table.api.Table;
import org.apache.flink.table.api.java.BatchTableEnvironment;
import org.apache.flink.types.Row;
import org.best.function.ClobToString;
import java.sql.Clob;
public class TestBatchJob {
public static void main(String[] args) throws Exception {
TypeInformation[] fieldTypes =new TypeInformation[]{
BasicTypeInfo.STRING_TYPE_INFO,
BasicTypeInfo.of(Clob.class)
};
RowTypeInfo rowTypeInfo =new RowTypeInfo(fieldTypes);
JDBCInputFormat jdbcInputFormat = JDBCInputFormat.buildJDBCInputFormat()
.setDrivername("oracle.jdbc.OracleDriver")
.setDBUrl("jdbc:oracle:thin:@192.168.0.123:1521:orcl")
.setUsername("test")
.setPassword("123456")
.setQuery("select a,to_clob(b) b from t1 where rownum<=100")
.setRowTypeInfo(rowTypeInfo)
.finish();
final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
DataSource s = env.createInput(jdbcInputFormat); //datasource
BatchTableEnvironment tableEnv = BatchTableEnvironment.create(env);
tableEnv.registerFunction("ClobToString", new ClobToString());
tableEnv.registerDataSet("t2", s, "a,b");
tableEnv.sqlQuery("select * from t2").printSchema();
Table query = tableEnv.sqlQuery("select a,ClobToString(b) as b from t2");
DataSet result = tableEnv.toDataSet(query, Row.class);
result.print();
env.execute("test");
}
}