Calcite-[6]-クエリーmysqlの構成
12724 ワード
構成calciteローカルmysqlの
model jsonは以下の通りです
テストコード
結果
に頼る
dbtest_1
ライブラリの下のstudent
表参照:tutorialmodel jsonは以下の通りです
{
version: '1.0',
defaultSchema: 'dbtest_1',
schemas: [
{
name: 'dbtest_1',
type: 'custom',
factory: 'org.apache.calcite.adapter.jdbc.JdbcSchema$Factory',
operand: {
jdbcDriver: 'com.mysql.jdbc.Driver',
jdbcUrl: 'jdbc:mysql://localhost:3306/dbtest_1',
jdbcUser: 'xxx',
jdbcPassword: 'xxx'
}
}
]
}
テストコード
package com.learn.mysql;
import org.apache.calcite.jdbc.CalciteConnection;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/**
* @Description:
* @Date:Create in 5:38 2018/9/15
* @Modified By:
*/
public class QueryMysql {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
Class.forName("com.mysql.jdbc.Driver");
Properties info = new Properties();
info.put("model",
"inline:"
+ "{
"
+ " version: '1.0',
"
+ " defaultSchema: 'dbtest_1',
"
+ " schemas: [
"
+ " {
"
+ " name: 'dbtest_1',
"
+ " type: 'custom',
"
+ " factory: 'org.apache.calcite.adapter.jdbc.JdbcSchema$Factory',
"
+ " operand: {
"
+ " jdbcDriver: 'com.mysql.jdbc.Driver',
"
+ " jdbcUrl:'jdbc:mysql://localhost:3306/dbtest_1',
"
+ " jdbcUser: 'xxx',
"
+ " jdbcPassword: 'xxx'
"
+ " }
"
+ " }
"
+ " ]
"
+ "}");
Connection connection =
DriverManager.getConnection("jdbc:calcite:", info);
// must print "directory ... not found" to stdout, but not fail
Statement statement = connection.createStatement();
CalciteConnection calciteConnection =
connection.unwrap(CalciteConnection.class);
ResultSet resultSet =
statement.executeQuery("select * from \"dbtest_1\".\"student\"");
ResultSet tables =
connection.getMetaData().getTables(null, null, null, null);
final StringBuilder buf = new StringBuilder();
while (resultSet.next()) {
int n = resultSet.getMetaData().getColumnCount();
for (int i = 1; i <= n; i++) {
buf.append(i > 1 ? "; " : "")
.append(resultSet.getMetaData().getColumnLabel(i))
.append("=")
.append(resultSet.getObject(i));
}
System.out.println(buf.toString());
buf.setLength(0);
}
resultSet.close();
statement.close();
connection.close();
}
}
結果
id=1; age=18; name=
id=2; age=18; name=
id=4; age=12; name=studentA
に頼る
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
dependency>
<dependency>
<groupId>org.apache.calcitegroupId>
<artifactId>calcite-coreartifactId>
<exclusions>
<exclusion>
<groupId>org.apache.calcite.avaticagroupId>
<artifactId>avatica-coreartifactId>
exclusion>
exclusions>
<version>1.12.0version>
dependency>
<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-coreartifactId>
<version>2.1.0version>
dependency>
<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-databindartifactId>
<version>2.1.0version>
dependency>
<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-annotationsartifactId>
<version>2.1.0version>
dependency>
<dependency>
<groupId>org.apache.calcite.avaticagroupId>
<artifactId>avaticaartifactId>
<version>1.9.0version>
dependency>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.10version>
dependency>
<dependency>
<groupId>org.junit.jupitergroupId>
<artifactId>junit-jupiter-apiartifactId>
<version>RELEASEversion>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>5.1.41version>
dependency>
dependencies>