sql-server - 如何使用 Grails 将数据从 SQL Server 同步到 Oracle

标签 sql-server database oracle grails

我正在使用 Grails 3.2.8、Java 8 和 Oracle 11g。 我需要使用 Grails 将数据从 SQL Server 插入和同步到 Oracle 的 1 个表。 我尝试过使用 Oracle GoldenGate,但我无法实现它。 还有其他方法吗?如果 grails 多数据源可以提供解决方案,那么该怎么做?

最佳答案

您可以使用 groovy Sql 创建到 2 个数据库的连接,而不用担心 Grails 域类,也许在 quartz job 中如下所示,每小时运行一次。

quartz 作业

class dbMoveJob {
    static triggers = {
        cron name: 'dbMoveJobCron', cronExpression: "0 0 0/1 * * ?"
    }

    def dbMoveService

    def execute() {
        dbMoveService.dbMove()
    }
}

服务

import groovy.sql.*
import org.springframework.beans.factory.annotation.Value

class dbMoveService {
    static final String SQL_SERVER_DRIVER = 'com.microsoft.sqlserver.jdbc.SQLServerDriver'
    static final String ORACLE_DRIVER = 'oracle.jdbc.OracleDriver'

    @Value( '${sqlServerUrl}' )
    def sqlServerUrl
    @Value( '${sqlServerUser}' )
    def sqlServerUser
    @Value( '${sqlServerPw}' )
    def sqlServerPw

    @Value( '${oracleUrl}' )
    def oracleUrl
    @Value( '${oracleUser}' )
    def oracleUser
    @Value( '${oraclePw}' )
    def oraclePw

    def dbMove() {
        def sqlServerDb
        def oracleDb

        try {
            sqlServerDb = Sql.newInstance( sqlServerUrl, sqlServerUser, sqlServerPw, SQL_SERVER_DRIVER ) 
            oracleDb = Sql.newInstance( oracleUrl, oracleUser, oraclePw, ORACLE_DRIVER ) 

            sqlServerDb.eachRow( 'select * from sql_server_table' ) {
                oracleDb.executeInsert( 'insert into oracle_table( oraclefield1, oraclefield2 ) values( ?, ? )', [it.sqlserverfield1, it.sqlserverfield2] )
            }
        }
        finally {
            sqlServerDb?.close()
            oracleDb?.close()
        }
    }
}

@Value 注释变量将从 application.yml 派生。

关于sql-server - 如何使用 Grails 将数据从 SQL Server 同步到 Oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52089192/

相关文章:

c# - "ResolveAssemblyReference"任务失败并出现 System.BadImageFormatException,但程序集未在任何地方使用!

java - 我似乎无法从 PLSQL 调用 java

sql - 如何解决 ORA-02049 和 Oracle 的一般锁定问题

sql-server - SQL Server : Geography search performance - query nearest stores

php - Mongo 中的多对多关系

MySQL 工作台 : Unable to Connect to Table

database - 用于在云上构建企业 Web (RIA) 应用程序的数据库架构(单一数据库与客户端特定数据库)

sql-server - 将仅订阅从 SSRS 2008 移动到 SSRS 2012

sql-server - 在 SQL Server 中保存日期

SQL添加新列来检查ID是否出现在另一个表中