private String getDataInsertSql(String tableName, ResultSet data)
throws Exception {
StringBuffer insertSql = new StringBuffer();
ResultSetMetaData meta = data.getMetaData();
insertSql.append("insert into " + tableName + "(");
for (int i = 0; i < meta.getColumnCount(); i++) {
// 少量有问题的数据类型,要跳过去
if ((meta.getColumnName(i + 1).equals("CHANNEL") && (tableName
.indexOf("PDM_PROD_NAMING") != -1))
|| meta.getColumnName(i + 1).equals("COUNT")) {
continue;
}
if (i != 0) {
insertSql.append(",");
}
insertSql.append(meta.getColumnName(i + 1));
}
insertSql.append(") values (");
for (int i = 0; i < meta.getColumnCount(); i++) {
// 少量有问题的数据类型,要跳过去
if ((meta.getColumnName(i + 1).equals("CHANNEL") && (tableName
.indexOf("PDM_PROD_NAMING") != -1))
|| meta.getColumnName(i + 1).equals("COUNT")) {
continue;
}
if (i != 0) {
insertSql.append(",");
}
// 要先取一下数据,后续才能调用wasNull()
data.getString(i + 1);
if (meta.getColumnTypeName(i + 1).equals("VARCHAR")
|| meta.getColumnTypeName(i + 1).equals("VARCHAR2")
|| meta.getColumnTypeName(i + 1).equals("CHAR")) {
if (data.wasNull()) {
insertSql.append("NULL");
} else {
insertSql.append("'");
insertSql.append(data.getString(i + 1).replace("'", "''"));
insertSql.append("'");
}
} else if (meta.getColumnTypeName(i + 1).equals("NUMBER")) {
insertSql.append(data.getDouble(i + 1));
} else if (meta.getColumnTypeName(i + 1).equals("DATE")) {
if (data.wasNull()) {
insertSql.append("NULL");
} else {
insertSql.append("TIMESTAMP '" + data.getDate(i + 1) + " "
+ data.getTime(i + 1) + "'");
}
} else if (meta.getColumnTypeName(i + 1).equals("CLOB")
|| meta.getColumnTypeName(i + 1).equals("BLOB")) {
// 二进制类型不做转换
// 这是一个limitation
insertSql.append("NULL");
} else {
// System.out.println("!!!!!!!"+meta.getColumnTypeName(i + 1));
}
}
insertSql.append(")");
return insertSql.toString();
}
throws Exception {
StringBuffer insertSql = new StringBuffer();
ResultSetMetaData meta = data.getMetaData();
insertSql.append("insert into " + tableName + "(");
for (int i = 0; i < meta.getColumnCount(); i++) {
// 少量有问题的数据类型,要跳过去
if ((meta.getColumnName(i + 1).equals("CHANNEL") && (tableName
.indexOf("PDM_PROD_NAMING") != -1))
|| meta.getColumnName(i + 1).equals("COUNT")) {
continue;
}
if (i != 0) {
insertSql.append(",");
}
insertSql.append(meta.getColumnName(i + 1));
}
insertSql.append(") values (");
for (int i = 0; i < meta.getColumnCount(); i++) {
// 少量有问题的数据类型,要跳过去
if ((meta.getColumnName(i + 1).equals("CHANNEL") && (tableName
.indexOf("PDM_PROD_NAMING") != -1))
|| meta.getColumnName(i + 1).equals("COUNT")) {
continue;
}
if (i != 0) {
insertSql.append(",");
}
// 要先取一下数据,后续才能调用wasNull()
data.getString(i + 1);
if (meta.getColumnTypeName(i + 1).equals("VARCHAR")
|| meta.getColumnTypeName(i + 1).equals("VARCHAR2")
|| meta.getColumnTypeName(i + 1).equals("CHAR")) {
if (data.wasNull()) {
insertSql.append("NULL");
} else {
insertSql.append("'");
insertSql.append(data.getString(i + 1).replace("'", "''"));
insertSql.append("'");
}
} else if (meta.getColumnTypeName(i + 1).equals("NUMBER")) {
insertSql.append(data.getDouble(i + 1));
} else if (meta.getColumnTypeName(i + 1).equals("DATE")) {
if (data.wasNull()) {
insertSql.append("NULL");
} else {
insertSql.append("TIMESTAMP '" + data.getDate(i + 1) + " "
+ data.getTime(i + 1) + "'");
}
} else if (meta.getColumnTypeName(i + 1).equals("CLOB")
|| meta.getColumnTypeName(i + 1).equals("BLOB")) {
// 二进制类型不做转换
// 这是一个limitation
insertSql.append("NULL");
} else {
// System.out.println("!!!!!!!"+meta.getColumnTypeName(i + 1));
}
}
insertSql.append(")");
return insertSql.toString();
}