Files
sqlite3/ext/csv/schema.go

40 lines
740 B
Go
Raw Permalink Normal View History

2023-11-23 03:28:56 +00:00
package csv
import (
"strconv"
"strings"
"github.com/ncruces/go-sqlite3"
)
func getSchema(header bool, columns int, row []string) string {
2023-12-06 15:39:26 +00:00
var sep string
2023-11-23 03:28:56 +00:00
var str strings.Builder
2023-12-06 15:39:26 +00:00
str.WriteString("CREATE TABLE x(")
2023-11-23 03:28:56 +00:00
if 0 <= columns && columns < len(row) {
row = row[:columns]
}
for i, f := range row {
str.WriteString(sep)
if header && f != "" {
str.WriteString(sqlite3.QuoteIdentifier(f))
} else {
2023-12-06 15:39:26 +00:00
str.WriteString("c")
2023-11-23 03:28:56 +00:00
str.WriteString(strconv.Itoa(i + 1))
}
2023-11-29 00:46:27 +00:00
str.WriteString(" TEXT")
2023-11-23 03:28:56 +00:00
sep = ","
}
for i := len(row); i < columns; i++ {
str.WriteString(sep)
2023-12-06 15:39:26 +00:00
str.WriteString("c")
2023-11-23 03:28:56 +00:00
str.WriteString(strconv.Itoa(i + 1))
2023-11-29 00:46:27 +00:00
str.WriteString(" TEXT")
2023-11-23 03:28:56 +00:00
sep = ","
}
str.WriteByte(')')
return str.String()
}