I am looking for a platform independent, generic tool for database schema replication across servers. I am a developer who, much like most other developers, point their local development environment to multiple external resource dependencies, mostly relational databases. That introduces a dependency on internet connection and VPN when I want to work outside the office. In my current case, my local environment points to three PostgreSQL
databases, which can all actually run on my local, free Postgres server, if I can easily replicate the network environments locally.
In case you wonder why I would ever want this, let me state that, as an avid outdoorsman, I like to sometimes work out of a campsite in the woods, with no internet connection.
Now, I know that there is pg_dump
but that is vendor specific and not very flexible. I am wondering if there is a tool for entire schema+data copying across different vendor platforms, kind of like generic SQL clients (my favorite one being DBeaver
) provide a platform independent interface that utilize different JDBC drivers or you can add your own.
I would imagine a user interface something similar to an FTP client where you have a source and a target and in the left you specify which database, schema or a subset of tables you want to replicate and on the right is the target database to replicate it into. I would also like to be able to convert users and permissions, e.g. privileges assigned to user X in the source assign to user Y in the target, when you generate the DDL statements to run on the target.
Additionally, it would be nice if such a tool were able to "translate" database schemas (to a reasonable degree, understanding each vendor may have some unique features) from one vendor to another. E.g. the source my be Oracle but I want to copy the schema and data into Postgres and my Hibernate
Java
ORM
provider shouldn't really care as long as table and column names are the same.
I really want to easily replicate my network databases into my local server and pg_dump
works OKAY but not very smoothly, especially when the local users do not use the same handles as the remote ones etc. I imagine this is a very standard operation that I shouldn't have to develop my own application to do but have been unable to find one that is as generic (cross platform compatible) as generic SQL client are (e.g. DBeaver) for what they do.