mysqldump

package module
v0.0.0-...-dffc623 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 10, 2023 License: MIT Imports: 12 Imported by: 0

README

Go MySQL Dump

Create MySQL dumps in Go without the mysqldump CLI as a dependancy.

This is a fork that aims to fix the weird date formatting behavior.

Simple Example
package main

import (
	"database/sql"
	"fmt"
	"os"

	"github.com/go-sql-driver/mysql"
	"github.com/GatitoUwU/go-mysqldump"
)

func main() {
	// Open connection to database
	config := mysql.NewConfig()
	config.User = "your-user"
	config.Passwd = "your-pw"
	config.DBName = "your-db"
	config.Net = "tcp"
	config.Addr = "your-hostname:your-port"

	dumpDir := "dumps"
	timeFormat := fmt.Sprintf(time.Now().Format(time.RFC3339)) // accepts time layout string and add .sql at the end of file
	fileName := fmt.Sprintf("%s", config.DBName)

	if err := os.MkdirAll(dumpDir, 0755); err != nil {
		fmt.Println("Error mkdir:", err)
		return
	}

	db, err := sql.Open("mysql", config.FormatDSN())
	if err != nil {
		fmt.Println("Error opening database:", err)
		return
	}

	// Register database with mysqldump
	dumper, err := mysqldump.Register(db, dumpDir, timeFormat, fileName)
	if err != nil {
		fmt.Println("Error registering databse:", err)
		return
	}

	// Dump database to file
	if err := dumper.Dump(); err != nil {
		fmt.Println("Error dumping:", err)
		return
	}
	if file, ok := dumper.Out.(*os.File); ok {
		fmt.Println("File is saved to", file.Name())
	} else {
		fmt.Println("It's not part of *os.File, but dump is done")
	}

	// Close dumper, connected database and file stream.
	dumper.Close()
}

GoDoc

Documentation

Index

Constants

View Source
const (
	Version = "0.7.4"
)

Version of this plugin for easy reference

Variables

This section is empty.

Functions

func Dump

func Dump(db *sql.DB, out io.Writer) error

Dump Creates a MYSQL dump from the connection to the stream.

Types

type Data

type Data struct {
	Out              io.Writer
	Connection       *sql.DB
	IgnoreTables     []string
	MaxAllowedPacket int
	LockTables       bool
	// contains filtered or unexported fields
}

Dump configuration parameters

func Register

func Register(db *sql.DB, dir, filename string) (*Data, error)

Register a new dumper.

func (*Data) Close

func (data *Data) Close() error

Close the dumper (and database connection).

func (*Data) Dump

func (data *Data) Dump() error

Dump data using struct

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL