Compare commits
No commits in common. "main" and "v3" have entirely different histories.
2 changed files with 6 additions and 24 deletions
11
README.md
11
README.md
|
@ -1,11 +0,0 @@
|
|||
# Usage
|
||||
|
||||
pgsplit takes a PostgreSQL dump with multiple databases through STDIN and extracts them to the current directory, named with the database name and an .sql extension.
|
||||
|
||||
`pgsplit -list` prints the database names contained in the SQL dump.
|
||||
|
||||
`pgsplit` extracts all databases.
|
||||
|
||||
`pgsplit -include-all -except foo -except bar` extracts all databases except for foo and bar.
|
||||
|
||||
`pgsplit -exclude-all -except foo -except bar` extracts only databases foo and bar.
|
19
main.go
19
main.go
|
@ -9,7 +9,7 @@ import (
|
|||
"slices"
|
||||
)
|
||||
|
||||
const VERSION = "v5"
|
||||
const VERSION = "v3"
|
||||
const MAXLINE = 1048576
|
||||
|
||||
type Db struct {
|
||||
|
@ -18,12 +18,10 @@ type Db struct {
|
|||
file *os.File
|
||||
}
|
||||
|
||||
func NewDb(name string) (db Db) {
|
||||
func NewDb(name string) (db Db, err error) {
|
||||
db.Name = name
|
||||
return
|
||||
}
|
||||
fmt.Printf("Database %s\n", db.Name)
|
||||
|
||||
func (db *Db) Open() (err error) {
|
||||
db.file, err = os.OpenFile(
|
||||
db.Name+".sql",
|
||||
os.O_CREATE|os.O_WRONLY|os.O_TRUNC,
|
||||
|
@ -66,17 +64,12 @@ func main() {
|
|||
prevDb.Close()
|
||||
|
||||
dbName := dbMatch[1]
|
||||
db = NewDb(dbName)
|
||||
if (flagIncludeAll && slices.Contains(flagExcept, dbName)) || (flagExcludeAll && !slices.Contains(flagExcept, dbName)) {
|
||||
fmt.Printf("Skipping %s\n", dbName)
|
||||
fmt.Printf("Skipping %s\n", dbName)
|
||||
continue
|
||||
}
|
||||
|
||||
fmt.Printf("Extracting %s\n", db.Name)
|
||||
if flagList {
|
||||
continue
|
||||
}
|
||||
if err = db.Open(); err != nil {
|
||||
if db, err = NewDb(dbName); err != nil {
|
||||
fmt.Printf("%s: %s\n", dbName, err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
@ -86,7 +79,7 @@ func main() {
|
|||
db.Write(line)
|
||||
}
|
||||
|
||||
if dbDone.MatchString(line) {
|
||||
if !flagList && dbDone.MatchString(line) {
|
||||
db.Completed = true
|
||||
db.Close()
|
||||
prevDb = db
|
||||
|
|
Loading…
Add table
Reference in a new issue