我需要將PostgreSQL數據庫的結構轉換爲Oracle。在PostgreSQL中,我有一個帶數據的postgres
數據庫。使用目標數據庫的數據類型生成XML/SQL輸出
在Oracle中,我有一個空白數據庫,我想在其中編寫PostgreSQL中的postgres
數據庫。
其實我不需要數據,只需要結構(關係)。
對此,我使用Liquibase。我得到的更新日誌和PostgreSQL使用以下命令:
liquibase \
--driver=org.postgresql.Driver \
--classpath="C:\db_drivers\postgresql-9.3-1102.jdbc3.jar" \
--changeLogFile="./postgresql_changelog.xml" \
--url="jdbc:postgresql://localhost:5432/postgres" \
--username=schema_name_here \
--password=************** \
--logLevel=debug \
--defaultSchemaName=sep \
generateChangeLog
在此之後我嘗試創建Oracle數據庫對象:
liquibase \
--driver=oracle.jdbc.OracleDriver \
--classpath="C:\db_drivers\ojdbc14.jar" \
--changeLogFile="./postgresql_changelog.xml" \
--url="jdbc:oracle:thin:@ip_here:orabeta" \
--username=*** \
--password=*** \
update
不起作用:ORA-00902
這裏是一個片段postgresql_changelog.xml:
...
<changeSet author="Alexey (generated)" id="1409146335011-53">
<createTable tableName="TABLE1A">
<column name="total_pk" type="INT8">
<constraints nullable="false"/>
</column>
<column name="form_fk" type="INT8">
<constraints nullable="false"/>
</column>
...
我也生成一個純S QL-文件:
liquibase \
--driver=oracle.jdbc.OracleDriver \
--classpath="C:\db_drivers\ojdbc14.jar" \
--changeLogFile="./postgresql_changelog.xml" \
--url="jdbc:oracle:thin:@ip_here:orabeta" \
--username=*** \
--password=*** \
updateSQL > update.sql
這裏是update.sql的片段:
...
CREATE TABLE SCHEMA_HERE.TABLE1A (total_pk INT8 NOT NULL, form_fk INT8, .....etc);
INSERT INTO SCHEMA_HERE.TABLE1A (ID, FORM_ID, ...etc)
...
我想生成的文件,其中所有數據類型對應到目標數據庫,即我要創造。我可以編寫一個簡單的解析器來替代數據類型,但它不是正確的解決方案 - 可以是多個數據庫。
它可以生成與目標數據庫的數據類型的XML/SQL輸出?
或者可能有一個選項允許使用「抽象」數據類型生成輸出?即與數據類型不在真實數據庫中,例如,而不是INT8
- 抽象整數數據類型等。
我將非常感激這些信息。謝謝大家。