Open
Description
Hi. I'm working on a feature for sqlc to do a bulk insert. sqlc generates a struct with the columns of the table, and I want to do a bulk insert of those.
Now my challenge is how to encode those values into a TSV as supported by https://dev.mysql.com/doc/refman/8.0/en/load-data.html#load-data-field-line-handling.
I wrote a small library for this (https://github.com/hexon/mysqltsv/blob/main/mysqltsv.go) but to correctly encode time.Time I need to know the Location from https://pkg.go.dev/github.com/go-sql-driver/mysql#Config.
What would be the cleanest way to support this?
- Expose a Config() method on
mysqlConn
which people could access through https://pkg.go.dev/database/sql#Conn.Raw - Expose a Config(v any) function that takes the value from https://pkg.go.dev/database/sql#Conn.Raw (same as the previous, but as a function that takes an argument rather than a method's receiver)
- RegisterStructsHandler that is responsible for converting structs to TSV and can be used instead of RegisterReaderHandler.
- Pass the Config to the callback of RegisterReaderHandler (in a backwards compatible way)
I'd love to hear it if you any other suggestions.
Metadata
Metadata
Assignees
Labels
No labels