Maison > Article > développement back-end > Comment restaurer la base de données dans Golang ?
Il existe plusieurs façons de restaurer une base de données dans Go : dump et restauration à l'aide des outils de ligne de commande db dump et db load. Utilisez la bibliothèque pgx pour effectuer des opérations de base de données plus pratiques impliquant l'importation de données à l'aide des tables temporaires CREATE TEMP TABLE.
La restauration est une étape cruciale car elle vous permet de récupérer les données de la version précédente de votre base de données. Il existe plusieurs façons d’y parvenir dans Go.
db dump
et db load
db dump
和 db load
命令行方法
您可以使用以下命令从数据库转储数据:
pg_dump -U username -h hostname -d database_name > dump.sql
要从转储还原数据,请运行以下命令:
psql -U username -h hostname database_name < dump.sql
代码实现
在 Go 中,您可以使用 exec.Command()
函数执行这些命令:
import ( "log" "os/exec" ) func DumpDatabase(user, host, db string) { cmd := exec.Command("pg_dump", "-U", user, "-h", host, "-d", db) outfile, err := os.Create("dump.sql") if err != nil { log.Fatal(err) } defer outfile.Close() cmd.Stdout = outfile if err := cmd.Run(); err != nil { log.Fatal(err) } } func LoadDatabase(user, host, db, dumpfile string) { cmd := exec.Command("psql", "-U", user, "-h", host, db) infile, err := os.Open(dumpfile) if err != nil { log.Fatal(err) } defer infile.Close() cmd.Stdin = infile if err := cmd.Run(); err != nil { log.Fatal(err) } } func main() { DumpDatabase("dbuser", "localhost", "mydb") LoadDatabase("dbuser", "localhost", "mydb", "dump.sql") }
代码实现
pgx
import ( "context" "log" "github.com/jackc/pgx/v4" ) const restoreStatement = ` CREATE TEMP TABLE imported_data ( id SERIAL PRIMARY KEY, name TEXT ) ON COMMIT PRESERVE ROWS; COPY imported_data (name) FROM stdin; INSERT INTO mytable (name) SELECT name FROM imported_data; DROP TABLE imported_data; ` func RestoreDatabase(conn *pgx.Conn, dumpfile string) error { file, err := os.Open(dumpfile) if err != nil { return err } defer file.Close() _, err = conn.Exec(context.Background(), restoreStatement, pgx.CopyTo(file, pgx.RowEncoder(func([]interface{}) error { return nil }))) if err != nil { return err } return nil } func main() { conn, err := pgx.Connect(context.Background(), "postgres://user:password@hostname/dbname") if err != nil { log.Fatal(err) } defer conn.Close() RestoreDatabase(conn, "dump.sql") }Pour restaurer les données du dump, exécutez la commande suivante :
pg_dump -U postgres -h localhost -d mail_db > db_backup.sqlImplémentation du code🎜🎜Dans Go, vous pouvez exécuter ces commandes en utilisant
exec.Command()
fonction : 🎜psql -U postgres -h localhost mail_db < db_backup.sql🎜Utiliser la bibliothèque pgx🎜🎜Implémentation du code🎜🎜La bibliothèque
pgx
fournit un moyen plus pratique d'effectuer des opérations de base de données. 🎜rrreee🎜Cas pratique🎜🎜Voici un exemple de restauration d'une base de données mail : 🎜rrreee🎜Pour restaurer la base de données, il vous suffit d'exécuter la commande suivante : 🎜rrreeeCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!