Coder Social home page Coder Social logo

ajunlonglive / pravasan Goto Github PK

View Code? Open in Web Editor NEW

This project forked from pravasan/pravasan

0.0 1.0 0.0 55.84 MB

Simple Migration Tool - written in Go

Home Page: http://pravasan.github.io/pravasan/

License: MIT License

HTML 74.07% Go 25.80% Shell 0.13%

pravasan's Introduction

Pravasan

Simple Migration tool intend to be used for any languages, for any db.

Build Status

Please feel free to criticize, comment, etc. Currently this is working for MySQL, PostgreSQL. Soon will be available for other Databases too.

Definition in Hindi


प्रवसन {pravasan} = MIGRATION(Noun)

Install

  1. Choose proper OS & Download from http://pravasan.github.io/pravasan/#download
  2. Unzip / Untar the file downloaded
  3. For some OS its default but some it needs to be explicit add chmod +x pravasan_*
  4. Look at the below Usage and start using it from the folder where you would like to execute & store migration files.

Usage

Syntax

pravasan [<flags>] <action> <sub-action> [data input]

Flags

Usage of pravasan:
  -autoAddColumns="": Add default columns when table is created
  -confOutput="json": config file format: json, xml
  -d="": database name
  -dbType="mysql": database type
  -h="localhost": database hostname
  -indexPrefix="idx": prefix for creating Indexes
  -indexSuffix="": suffix for creating Indexes
  -migDir="./": migration file stored directory
  -migFileExtn="prvsn": migration file extension
  -migFilePrefix="": prefix for migration file
  -migOutput="json": current supported format: json, xml
  -migTableName="schema_migrations": migration table name
  -p=false: database password
  -port="5432": database port
  -storeDirectSQL=true: Store SQL in migration file instead of XML / JSON
  -u="": database username
  -version=false: print Pravasan version

To create the configuration file use either of the below commands & pravasan.conf.json / pravasan.conf.xml will be created

pravasan -u="root" -p -dbType="mysql" -d="testdb" -h="localhost" -port="5433" create conf 
pravasan -u=root -p -dbType=postgres -d=testdb -h=localhost -port=5433 -output=xml create conf 

Assuming the pravasan.conf.json or pravasan.conf.xml file is set already

pravasan add add_column test123 id:int
pravasan a ac test123 id:int                                     # Same as above

pravasan add add_index test123 id order name

pravasan add create_table test123 id:int name:string order:int status:bool
pravasan a ct test123 id:int name:string order:int status:bool              # Same as above

pravasan add drop_column test123 id
pravasan add drop_index test123 id order name
pravasan add rename_table test123 new_test123
pravasan add sql                                           # to add SQL statements directly.

pravasan down [-1]
pravasan up
pravasan up 20150103174227, 20150103174333

If you like not to store the credentials in file then use it like this

pravasan -u=root -p -dbType=postgres -d=testdb -h=localhost -port=5433 up 20150103174227

Work in progress are:

  • Support for Oracle, MongoDB, etc.,

High Level Features

  • Create & read from Conf file (XML / JSON)
  • Output in XML, JSON format
  • Support for Direct SQL Statements
  • Support for MySQL, Postgres
  • Temporarily SQLite3 is stopped - due to compile issue.

All Features / Bugs

Few Other Notes:

Details

Add few columns by default during creation of a table.

$ pravasan -autoAddColumns: id:int created_at:datetime modified_at:datetime create conf

The above command will add the 3 columns id, created_at, modified_at will be stored in configuration & will get added during any create_table statements.

To store direct sql in JSON or XML format

$ pravasan -storeDirectSQL a ct test123 id:int

The above command will add (a) a migration & will generate create_table (ct) action with the table name test123 with only one column id of datatype int as SQL into the JSON (by default) or XML if there is an configuration file present and set XML to generate.

To get the list of datatypes supported

$ pravasan list datatypes           # All databases
$ pravasan l dt                     # All databases
$ pravasan list dt postgresql       # Will list datatypes supported by PostgreSQL
$ pravasan list datatypes sqlite3   # Will list datatypes supported by SQLite3
$ pravasan l dt mysql               # Will list datatypes supported by MySQL

Below is the sample output for the above last command.

+-------------------+-----------------------+--------------+
|     DATATYPE      | SUPPORTED DATABASE(S) |    ALIAS     |
+-------------------+-----------------------+--------------+
| VARCHAR           | MySQL                 |              |
| VARBINARY         | MySQL                 |              |
| MEDIUMBLOB        | MySQL                 |              |
| LONGBLOB          | MySQL                 |              |
| DATE              | MySQL                 |              |
| REAL              | MySQL                 |              |
| DEC               | MySQL                 | DECIMAL      |
| NUMERIC           | MySQL                 | DECIMAL      |
| STRING            | MySQL                 | VARCHAR(255) |

pravasan's People

Contributors

kishorevaishnav avatar rafaelgfirmino avatar pravasan avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.