0

こんにちは、ファイルからテーブル スキーマを読み取るシナリオがあり、JDBC を使用してテーブルを作成する必要があります。

たとえば、ファイルには含まれています

{"ColumnTypes":["int32","fstring32"],"ColumnNames":["ProductId",","ProductName"]}

ここで、JDBC 実行クエリを使用して、実行時にテーブルを作成する必要があります。配列を使用してテーブルを作成するとします。半分の配列には列が含まれています。名前の半分の配列にはデータ型が含まれています。すべての値を手動で入力する必要があります。最も効率的な方法はありますか?

テーブル tb1 を作成 (arr[1]、arr[26]、arr[2]、arr[26].....arr[25]、arr[50])

ガイドしてください。前もって感謝します。

4

2 に答える 2

1

データベース定義に実際に名前と型のペアのみが含まれ、インデックス、外部キー参照、その他の制約などの追加情報が含まれていない場合は、aMap<String, String>で十分です。たとえば、次のようなクラスを作成できますTableDef

public class TableDef {
  private final String tableName;
  private final Map<String, String> colDef = new LinkedHashMap<String, String>();

  public TableDef(String tableName) {
     this.tableName = tableName;
  }

  public void addColumn(String name, String type) {
    if (colDef.containsKey(name))
      throw new IllegalArgumentException(name + " column already added");
    colDef.put(name, type);
  }

  public String getCreateTable() {
    String ddl = "CREATE TABLE " + tableName + "(";
    for (Map.Entry<String, String> col : colDef.entrySet()) {
      // add column to ddl
    }
    return ddl + ")";
  }
}

または、重複する列名が存在しないことが確実な場合はCREATE TABLE、スキーマ定義を読み取りながらステートメントを動的に作成できます。ただし、数千の列とテーブルがない限り、パフォーマンスに大きな違いはありません。

大量のデータを効率的に挿入するには、この回答をご覧ください。

于 2013-06-28T11:59:24.570 に答える