This commit is contained in:
oneao committed 2026-04-19 21:30:51 +08:00
1 parent b6415c0d65
commit 89aaef1d6b
29 files changed
+1118 -277

No files matched your search

+24 -5
View File
@@ -17,9 +17,18 @@ func buildInsertSQL(table string, data map[string]any) (string, []any) {
args []any
)
// 处理 schema.table 的情况
tableParts := strings.Split(table, ".")
for i, p := range tableParts {
tableParts[i] = `"` + p + `"`
}
table = strings.Join(tableParts, ".")
i := 1
for col, val := range data {
columns = append(columns, col)
// 列名加引号
columns = append(columns, `"`+col+`"`)
placeholders = append(placeholders, fmt.Sprintf("$%d", i))
args = append(args, val)
i++
@@ -80,12 +89,18 @@ func (c *Client) BatchInsert(
return fmt.Errorf("数据不能为空")
}
// 用第一条确定列顺序
first := dataList[0]
if _, err := validateData(table, keyField, first); err != nil {
return err
}
// 👉 表名加引号(支持 schema)
tableParts := strings.Split(table, ".")
for i, p := range tableParts {
tableParts[i] = `"` + p + `"`
}
table = strings.Join(tableParts, ".")
var columns []string
for col := range first {
columns = append(columns, col)
@@ -93,6 +108,12 @@ func (c *Client) BatchInsert(
sort.Strings(columns)
// 👉 列名加引号
var quotedColumns []string
for _, col := range columns {
quotedColumns = append(quotedColumns, `"`+col+`"`)
}
var (
valueStrings []string
args []any
@@ -100,12 +121,10 @@ func (c *Client) BatchInsert(
)
for _, data := range dataList {
// 统一校验
if _, err := validateData(table, keyField, data); err != nil {
return err
}
// 字段数量检查
if len(data) != len(columns) {
return fmt.Errorf("批量插入失败:数据字段不一致")
}
@@ -132,7 +151,7 @@ func (c *Client) BatchInsert(
sql := fmt.Sprintf(
"INSERT INTO %s (%s) VALUES %s",
table,
strings.Join(columns, ", "),
strings.Join(quotedColumns, ", "),
strings.Join(valueStrings, ", "),
)