Skip to content

appcypher/pgseeder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PGSEEDER

A seeder for adding and removing seeds from a Postgres database.

🛠 INSTALLATION

  • Clone pgseeder repo and cd into the created folder

    git clone https://github.com/gigamono/pgseeder
    cd pgseeder
  • Build the binary.

    go build cmd/pgseeder.go
  • Add the binary to system path and run pgseeder -h command

📜 USAGE

CREATING SEED FILES

  • Pgseeder expects .sql filenames to be ordered based on their dependency.

    The ordering format has to be a prefix and an integer.

    For example:

    01_users.sql
    
    20210702_users.sql
    
  • You can use Pgseeder to create a timestamped .sql file.

    pgseeder --create "users"

    This generates a timestamped .sql file similar to this: 20210620150637_users.sql

ℹ️ Ordering allows Pgseeder to avoid foreign key constraint errors when adding or removing all seeds.

ADDING SEEDS TO THE DATABASE

  • To add seeds from a 20210620150637_users.sql file, you run following command:

    pgseeder -c "postgres://postgres@localhost:5432/resourcedb?sslmode=disable" --add users

    The -c is needed to connect to the database. It takes postgres connection string.

  • You can also run all the .sql files in the current directory with the --add-all flag

    pgseeder -c "postgres://postgres@localhost:5432/resourcedb?sslmode=disable" --add-all
  • You can specify a directory where the .sql files live with -d flag

    pgseeder -c "postgres://postgres@localhost:5432/resourcedb?sslmode=disable" --add-all -d "./seeds"

ℹ️ To support removing seeds later, Pgseeder expects the .sql filename to correspond to seeded table's name.

If multiple tables are seeded in a .sql file, Pgseeder will only recognise the one that matches the filename.

REMOVING SEEDS FROM THE DATABASE

  • Here is how to remove seeds from users table.

    pgseeder -c "postgres://postgres@localhost:5432/resourcedb?sslmode=disable" --remove users
  • To remove all seeds.

    pgseeder -c "postgres://postgres@localhost:5432/resourcedb?sslmode=disable" --remove-all

SEED KEYS

  • By default Pgseeder stores the id (if there is one) of the seed which it uses later to remove it.

  • Sometimes the primary key is not id. You can specify the primary key with -k flag.

    pgseeder -c "postgres://postgres@localhost:5432/resourcedb?sslmode=disable" --add users -k "user_id"
  • And to uniquely identify seeds using composite keys, you separate them by colons, commas or spaces.

    pgseeder -c "postgres://postgres@localhost:5432/resourcedb?sslmode=disable" --add x_memberships -k "user_id, workspace_id"

💀 CURRENT LIMITATIONS

  • Only supports .sql files.

  • Does not support seeding multiple tables in a single .sql file.

About

A Seeder for Postgres Databases

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages