in tools/query_verification/src/main/java/com/google/bigquery/TeradataManager.java [194:238]
public List<String> generateDdlStatementsFromJsonSchema() {
List<String> ddlStatements = new ArrayList<String>();
for (JsonElement schemaElement : schema.getJsonArray()) {
if (schema.getJsonArray().size() == 0) {
return null;
}
JsonObject schemaObject = schemaElement.getAsJsonObject();
if (schemaObject.has("tableReference")) {
JsonObject tableReference = schemaObject.get("tableReference").getAsJsonObject();
if (tableReference.has("datasetId") && tableReference.has("tableId")) {
StringBuilder statement = new StringBuilder("CREATE TABLE ");
statement.append(tableReference.get("datasetId").getAsString());
statement.append(".");
statement.append(tableReference.get("tableId").getAsString());
statement.append(" (");
// Generate column syntax for each field provided in JSON
List<String> columns = new ArrayList<>();
for (JsonElement fieldElement : schemaObject.getAsJsonArray("fields")) {
JsonObject field = fieldElement.getAsJsonObject();
// Assemble column syntax
StringBuilder column = new StringBuilder();
column.append(field.get("name").getAsString());
column.append(" ");
column.append(field.get("type").getAsString());
if (field.has("mode")) {
column.append(" ");
column.append(field.get("mode").getAsString());
}
columns.add(column.toString());
}
statement.append(String.join(", ", columns));
statement.append(")");
ddlStatements.add(statement.toString());
}
}
}
return ddlStatements;
}