-1

我正在通过 Apache calcite 将数据从 SQL 插入到文件

 Class.forName("org.apache.calcite.jdbc.Driver");
 Connection connection = DriverManager.getConnection("jdbc:calcite:");
 CalciteConnection calciteConnection = connection.unwrap(CalciteConnection.class);
 SchemaPlus rootSchema = calciteConnection.getRootSchema(); 
 JdbcSchema jdbcSchema = JdbcSchema.create(rootSchema, "TRUNKDB", dataSource,  null, "dbo");       
 rootSchema.add("XXXX", jdbcSchema);

 /*CSV Schema*/
 File csvDir = new File("/home/nanobi/Drill/CSV/");
 // SchemaPlus schema = rootSchema.add("s", new CsvSchema(csvDir,null)); 
 rootSchema.add("CSV", new CsvSchema(csvDir, Flavor.SCANNABLE));

 Statement statement = connection.createStatement();

 int resultSet =   statement.executeUpdate("INSERT into \"CSV\".\"p\"(\"Name\") select \"name\" from \"TRUNKDB\".\"nbmdc_nanomarts\"");

我收到以下错误

Exception in thread "main" java.sql.SQLException: Error while executing SQL "INSERT into "CSV"."p"("Name") select 'p' from "TRUNKDB"."nbmdc_nanomarts"": Node [rel#29:Subset#3.ENUMERABLE.[]] could not be implemented; planner state:

Root: rel#29:Subset#3.ENUMERABLE.[]
Original rel:


    Sets:
    Set#0, type: RecordType(VARCHAR(45) row_id, VARCHAR(45) si_id, VARCHAR(500) name, VARCHAR(500) description, VARCHAR(255) icon_path,
VARCHAR(255) icon_content, VARCHAR(255) active_flag, TIMESTAMP(3)
created_datetime, VARCHAR(45) created_by_user_id, TIMESTAMP(3)
updated_datetime, VARCHAR(45) updated_by_user_id, VARCHAR(500)
nanomart_xml_filepath, VARCHAR(255) db_username, VARCHAR(255)
db_user_password, VARCHAR(255) dbase_name, VARCHAR(255) db_url,
VARCHAR(255) db_schema_name, CHAR(1) is_mandatory, CHAR(1)
is_load_lock, VARCHAR(45) mart_type, VARCHAR(255) db_driver,
VARCHAR(255) load_frequency, CHAR(1) is_date_table, CHAR(1) is_alias,
VARCHAR(500) nbmdc_n, VARCHAR(45) master_flag, VARCHAR(50)
nbmdm_repository_row_id, CHAR(1) is_hierarchical, VARCHAR(4000)
inplacedetail)
        rel#8:Subset#0.JDBC.TRUNKDB.[], best=rel#0, importance=0.6561
            rel#0:JdbcTableScan.JDBC.TRUNKDB.[](table=[TRUNKDB, nbmdc_nanomarts]), rowcount=100.0, cumulative cost={100.0 rows, 101.0
cpu, 0.0 io}
4

1 回答 1

1

不幸的是 Calcite 目前不支持修改 CSV 文件。仅对 JDBC 表进行了修改。

于 2016-10-19T15:06:15.590 回答