在表和文件之间复制数据

PostgreSQL 允许使用 COPY TOCOPY FROM 命令在表和文件之间高效地复制数据。

COPY TO

将数据从表复制到 io.Writer

import "github.com/uptrace/bun/driver/pgdriver"

conn, err := db.Conn(ctx)
if err != nil {
	panic(err)
}
defer conn.Close()

var buf bytes.Buffer

res, err := pgdriver.CopyTo(ctx, conn, &buf, "COPY table_name TO STDOUT")
if err != nil {
	panic(err)
}

fmt.Println(buf.String())

COPY FROM

将数据从 io.Reader 复制到表

import "github.com/uptrace/bun/driver/pgdriver"

conn, err := db.Conn(ctx)
if err != nil {
	panic(err)
}
defer conn.Close()

file, err := os.Open("data.csv")
if err != nil {
	panic(err)
}

res, err := pgdriver.CopyFrom(ctx, conn, file, "COPY table_name FROM STDIN")
if err != nil {
	panic(err)
}