ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Multi-row Insert Builder
    카테고리 없음 2025. 11. 20. 10:06

    public String buildMultiRowInsertSql(
            String tableName,
            List<String> columns,
            List<List<Object>> rows
    ) {
        String columnPart = columns.stream()
                .map(col -> "[" + col + "]")
                .collect(Collectors.joining(", "));

        StringBuilder sb = new StringBuilder();
        sb.append("INSERT INTO ").append(tableName).append(" (")
                .append(columnPart)
                .append(")\nVALUES\n");

        for (int i = 0; i < rows.size(); i++) {
            List<Object> row = rows.get(i);

            String valuePart = row.stream()
                    .map(this::toSqlValue)
                    .collect(Collectors.joining(", "));

            sb.append("(").append(valuePart).append(")");

            if (i < rows.size() - 1) sb.append(",\n");
        }

        return sb.toString();
    }

    private String toSqlValue(Object v) {
        if (v == null) return "NULL";
        if (v instanceof Number) return v.toString();
        if (v instanceof java.util.Date)
            return "'" + new java.sql.Timestamp(((Date) v).getTime()) + "'";
        
        // escape single quotes
        return "'" + v.toString().replace("'", "''") + "'";
    }

    댓글

Designed by Tistory.