wrench
is a schema management tool for Cloud Spanner.
Please feel free to report issues and send pull requests, but note that this application is not officially supported as part of the Cloud Spanner product.
$ cat ./_examples/schema.sql
CREATE TABLE Singers (
SingerID STRING(36) NOT NULL,
FirstName STRING(1024),
) PRIMARY KEY(SingerID);
# create database with ./_examples/schema.sql
$ wrench create --directory ./_examples
# create migration file
$ wrench migrate create --directory ./_examples
_examples/migrations/000001.sql is created
# edit _examples/migrations/000001.sql
$ cat ./_examples/migrations/000001.sql
ALTER TABLE Singers ADD COLUMN LastName STRING(1024);
# execute migration
$ wrench migrate up --directory ./_examples
# load ddl from database to file ./_examples/schema.sql
$ wrench load --directory ./_examples
# finally, we have successfully migrated database!
$ cat ./_examples/schema.sql
CREATE TABLE SchemaMigrations (
Version INT64 NOT NULL,
Dirty BOOL NOT NULL,
) PRIMARY KEY(Version);
CREATE TABLE Singers (
SingerID STRING(36) NOT NULL,
FirstName STRING(1024),
LastName STRING(1024),
) PRIMARY KEY(SingerID);
Get binary from release page. Or, you can use Docker container: mercari/wrench.
export SPANNER_PROJECT_ID=your-project-id
export SPANNER_INSTANCE_ID=your-instance-id
export SPANNER_DATABASE_ID=your-database-id
You can also specify project id, instance id and database id by passing them as command arguments.
$ wrench create --directory ./_examples
This creates the database with ./_examples/schema.sql
.
$ wrench drop
This just drops the database.
wrench reset --directory ./_examples
This drops the database and then re-creates with ./_examples/schema.sql
. Equivalent to drop
and then create
.
$ wrench load --directory ./_examples
This loads schema DDL from database and writes it to ./_examples/schema.sql
.
$ wrench migrate create --directory ./_examples
This creates a next migration file like _examples/migrations/000001.sql
. You will write your own migration DDL to this file.
$ wrench migrate up --directory ./_examples
This executes migrations. This also creates SchemaMigrations
table into your database to manage schema version if it does not exist.
$ wrench apply --ddl ./_examples/ddl.sql
This applies single DDL or DML.
Use wrench [command] --help
for more information about a command.
Please read the contribution guidelines before submitting pull requests.
- Start spanner emulator.
$ docker run --rm -it -p 9010:9010 -p 9020:9020 gcr.io/cloud-spanner-emulator/emulator:1.5.0
- Initialize a spanner instance.
$ make setup-emulator
- Run tests
$ make test
Copyright 2019 Mercari, Inc.
Licensed under the MIT License.