Taps – simple database import/export app

A simple database agnostic import/export app to transfer data to/from a remote database.

Usage: Server

Here’s how you start a taps server

$ taps server postgres://localdbuser:localdbpass@localhost/dbname httpuser httppassword

You can also specify an encoding in the database url

$ taps server mysql://localdbuser:localdbpass@localhost/dbname?encoding=latin1 httpuser httppassword

Usage: Client

When you want to pull down a database from a taps server

$ taps pull postgres://dbuser:dbpassword@localhost/dbname http://httpuser:[email protected]:5000

or when you want to push a local database to a taps server

$ taps push postgres://dbuser:dbpassword@localhost/dbname http://httpuser:[email protected]:5000

or when you want to transfer a list of tables

$ taps push postgres://dbuser:dbpassword@localhost/dbname http://httpuser:[email protected]:5000 --tables logs,tags

or when you want to transfer tables that start with a word

$ taps push postgres://dbuser:dbpassword@localhost/dbname http://httpuser:[email protected]:5000 --filter '^log_'

Usage: Options

Run -h with each command to get a view of options for the command.

$ taps pull -h
Usage: taps pull [OPTIONS] <local_database_url> <remote_url>
Pull a database from a taps server
    -s, --skip-schema                Don't transfer the schema, just data
    -i, --indexes-first              Transfer indexes first before data
    -r, --resume=file                Resume a Taps Session from a stored file
    -c, --chunksize=N                Initial Chunksize
    -g, --disable-compression        Disable Compression
    -f, --filter=regex               Regex Filter for tables
    -t, --tables=A,B,C               Shortcut to filter on a list of tables
    -e, --exclude_tables=A,B,C       Shortcut to exclude a list of tables
    -d, --debug                      Enable Debug Messages

Known Issues

  • Foreign key constraints get lost in the schema transfer

  • Tables without primary keys will be incredibly slow to transfer. This is due to it being inefficient having large offset values in queries.

  • Multiple schemas are currently not supported

Meta

Original Gem (taps, taps-taps) not actively maintained. This Gem maintained by Cecili Reid (cecili dot reid at tinroofsoftware dot com)

Written by Ricardo Chimal, Jr. (ricardo at heroku dot com) and Adam Wiggins (adam at heroku dot com)

Early research and inspiration by Blake Mizerany

Released under the MIT License: www.opensource.org/licenses/mit-license.php

github.com/ricardochimal/taps

Special Thanks to Sequel for making this tool possible sequel.rubyforge.org/