in adb2client/src/main/java/com/alibaba/cloud/analyticdb/adbclient/AdbClient.java [1195:1253]
private void checkTableConfig(String tableName) {
TableInfo tableInfoTmp = this.tableInfo.get(tableName);
if (tableInfoTmp == null) {
return;
}
if (!"realtime".equals(tableInfoTmp.getUpdateType().toLowerCase())) {
throw new RuntimeException("table " + tableName + " is not realtime table, can not insert by Adb Client");
}
List<String> allColumns = new ArrayList<String>();
List<ColumnInfo> columnInfo = tableInfoTmp.getColumns();
for (ColumnInfo eachColumn : columnInfo) {
allColumns.add(eachColumn.getName());
}
dealColumnConf(tableName, allColumns);
this.tableColumnsMetaData.put(tableName, getColumnMetaData(tableInfoTmp, this.databaseConfig.getColumns(tableName)));
Map<String, Pair<Integer, String>> configColumnMetaDataTmp = new HashMap<String, Pair<Integer, String>>();
for (int i = 0; i < this.databaseConfig.getColumns(tableName).size(); i++) {
String oriEachColumn = this.databaseConfig.getColumns(tableName).get(i);
String eachColumn = oriEachColumn;
// 防御性保留字
if (eachColumn.startsWith(COLUMN_QUOTE_CHARACTER) && eachColumn.endsWith(COLUMN_QUOTE_CHARACTER)) {
eachColumn = eachColumn.substring(1, eachColumn.length() - 1);
}
for (String eachAdsColumn : tableInfoTmp.getColumnsNames()) {
if (eachColumn.equalsIgnoreCase(eachAdsColumn)) {
configColumnMetaDataTmp.put(oriEachColumn, this.tableColumnsMetaData.get(tableName).get(eachAdsColumn));
}
}
if (eachColumn.equalsIgnoreCase(tableInfoTmp.getPartitionColumn())) {
this.partitionColumnIndex.put(tableName, i);
}
}
this.configColumnsMetaData.put(tableName, configColumnMetaDataTmp);
// insertSqlPrefix init
if (isAllColumn.get(tableName)) {
if (!databaseConfig.isInsertWithColumnName()) {
if (databaseConfig.isInsertIgnore()) {
this.insertSqlPrefix.put(tableName, String.format(INSERT_IGNORE_ALL_COLUMN_TEMPLATE, tableName));
} else {
this.insertSqlPrefix.put(tableName, String.format(INSERT_ALL_COLUMN_TEMPLATE, tableName));
}
} else {
if (databaseConfig.isInsertIgnore()) {
this.insertSqlPrefix.put(tableName, String.format(INSERT_IGNORE_TEMPLATE, tableName, StringUtils.join(this.databaseConfig.getColumns(tableName), ",")));
} else {
this.insertSqlPrefix.put(tableName, String.format(INSERT_TEMPLATE, tableName, StringUtils.join(this.databaseConfig.getColumns(tableName), ",")));
}
}
} else {
if (databaseConfig.isInsertIgnore()) {
this.insertSqlPrefix.put(tableName, String.format(INSERT_IGNORE_TEMPLATE, tableName, StringUtils.join(this.databaseConfig.getColumns(tableName), ",")));
} else {
this.insertSqlPrefix.put(tableName, String.format(INSERT_TEMPLATE, tableName, StringUtils.join(this.databaseConfig.getColumns(tableName), ",")));
}
}
}