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()
|
|
|
|
|
}
|