Calcite подключается к серверу sql

Я пытаюсь подключиться к SQL-серверу с помощью Calcite. пытаясь запустить очень простой пример, чтобы просто вытащить данные из таблицы людей.

Вот код, который я использую Schema:

public static class PersonSchema
{

   public final Person[] persons;   

  public PersonSchema(Person[] persons)
 {
     this.persons = persons;
 }

 public PersonSchema(){
    persons=null;
 }
}

public static class Person {
   public final int personId;
   public final String firstName;
   public final String lastName;

   public Person(int personId, String firstName, String lastName) {
      this.personId = personId;
      this.firstName = firstName;
      this.lastName = lastName;
    }
  }
}

Вот основной код

  @Test public void testRealSqlServerData_MI() throws Exception {
      Class.forName("org.apache.calcite.jdbc.Driver");
      Properties info = new Properties();
      info.setProperty("lex", "SQL_SERVER");
      info.setProperty("UserName", "USER_XXX");
      info.setProperty("Password", "XXXXXXX");
      Connection connection =         DriverManager.getConnection
     ("jdbc:calcite://SPG;databaseName=Dept", info);

     CalciteConnection calciteConnection =
          connection.unwrap(CalciteConnection.class);


      SchemaPlus rootSchema = calciteConnection.getRootSchema();
      SchemaPlus schema = rootSchema.add("PersonSchema", 
          new      ReflectiveSchema(new PersonSchema()));         

      Statement statement = calciteConnection.createStatement();
      ResultSet resultSet = statement.executeQuery(
          "select e.personid, e.firstname, e.lastname \n"
          + "from person_tbl as e\n");            

      resultSet.close();
      statement.close();
      connection.close();
  } 

Настройки сервера sql такие. Сервер - БД SPG - Схема отдела - dbo

Проблемы:

  1. Я получаю Table not found, поэтому похоже, что он не читает схему.
  2. Я хотел бы понять создание схемы на кальците, потому что sqls в реальном времени будет сложнее со многими соединениями.
  3. Как лучше всего подключиться к sql server. Выше кода в правильном направлении.

Заранее спасибо.

Риши


person user1098765    schedule 23.09.2016    source источник


Ответы (2)


Попробуйте заключить в двойные кавычки имена таблиц и столбцов в вашем запросе.

ResultSet resultSet = statement.executeQuery(
      "select e.\"personid\", e.\"firstname\", e.\"lastname\" \n"
      + "from \"person_tbl\" as e\n");
person qkerby    schedule 13.07.2018

вы можете попробовать это:

info.setProperty("caseSensitive", "false");
person weichao    schedule 05.01.2021