Transfering data between different DBMS's

2019-07-07 08:29发布

问题:

I would like to transfer the whole Database i have in Informix to Oracle. We have an an application which works on both Databases, one of our customers is moving from Informix to Oracle, and needs to transfer the whole Database to Oracle (the structure is the same).

We need often to transfer data between oracle/Mssql/Informix sometimes only one table and not the whole Database.

Does anybody know about any good program which does this kind of job?

回答1:

The Pentaho Data Integration ETL tools are available as open source (also known under the former name "Kettle") for cross-database migration and many other use cases.

From their data sheet:

Common Use Cases

  • Data warehouse population with built-in support for slowly changing dimensions, junk dimensions
  • Export of database(s) to text-file(s) or other databases
  • Import of data into databases, ranging from text-files to excel sheets
  • Data migration between database applications
  • ...

A list of input / output data formats can be found in the accepted answer of this question: Does anybody know the list of Pentaho Data Integration (Kettle) connectors list? It supports all databases with a JDBC driver, which means most of them.



回答2:

Check this question of mine, it includes some very good ideas: Searching for (freeware) database migration tool



回答3:

you could give the Oracle Migration Workbench a try. See http://download.oracle.com/docs/html/B15858_01/toc.htm If you want to read Informix data into Oracle on a regular basis, using the Heterogeneous Services might be a better option. Check for hs4odbc or dg4odbc, depending on the Oracle release you have.

I hope this helps, Ronald.



回答4:

I have done this in the past and it is not a trivial task. We ended up writing out each table out to a pipe delimited flat file and reloading each table into Oracle with Oracle SQL Loader. There was a ton of Perl scripts to scrub the source data and shell scripts to automate the process as much as possible and run things in parallel as well.

Gotchas that can come up: 1. Pick a delimiter that is as unique as possible. 2. Try to find data types that match as close as possible to the Informix ones as possible. ie date vs. timestamp 3. Try to get the data as clean as possible prior to dumping out the flat files. 4. HS will most likely be too slow..

This was done years ago. You may want to investigate Golden Gate (now owned by Oracle) software which may help with the process(GG did not exist when I did it)

Another idea is use an ETL tool to read Informix and dump the data into Oracle (Informatica comes to mind)

Good luck :)



回答5:

sqlldr - Oracle's import utility

Here's what I did to transfer 50TB of data from MySQL to ORacle. Generated csv files from MySql and used sqlldr utility in oracle to export all the data from the files to oracle db. It is the fastest way to import data. I researched on this for a few weeks and done lot of benchmark test cases and sqlldr is hands down best and fastest way to import into oracle.