当前位置: 首页 > 知识库问答 >
问题:

从oracle到DB2的流的ETL问题

逄宁
2023-03-14

我在Oracle中有一个ETL,它转换数据并将数据与INSERT一起发送到DB2数据库中。对于行数较少的表来说,没有问题,但对于有400000行的两个表来说,有问题。

>

  • 插入操作非常慢,平均每秒50/60行。我怀疑在DB2中,每行都有自动提交。

    当最后一个循环结束时,该过程将无限期地继续执行。如果终止执行,所有行都会正确写入DB2 DB。然后,如果我尝试从oracle中选择Db2,SQL Dev it会告诉我连接已关闭。

    我为我的英语感到抱歉,我希望你能帮助我。

    DECLARE
      V_MIN                NUMBER := 1;
      V_MAX                NUMBER := 40000;
      ....
    BEGIN
      BEGIN
        DELETE FROM DB2C.TABLE_DEST@RELMANAG;
        COMMIT;
      EXCEPTION
        WHEN OTHERS THEN
        dbms_output.put_line(sqlerrm);
      END;
    
     SELECT COUNT(*)
     INTO V_CONT_ORCL_FS
     FROM TABLE_ORIGIN;
    
     WHILE V_MIN <= v_cont_orcl_fs  LOOP
       FOR I IN
      (query_Cursor on TABLE_ORIGIN    )
      LOOP
        insert into ....
        EXCEPTION
        WHEN OTHERS THEN
          ROLLBACK;
          DBMS_OUTPUT.PUT_LINE(SQLERRM);
        END;
      END LOOP; --FOR
      V_MIN  := V_MAX + 1;
      V_MAX := V_MAX + 40000;
    
    
     END LOOP; --WHILE
     COMMIT;
    END;
    

    我可以尝试在SQL*PLUS上复制但不起作用

  • 共有1个答案

    萧胜
    2023-03-14

    如果您想在DB2数据库中插入大量行,您可以使用load命令。

    此命令将CSV文件中的数据加载到数据库中,这正是您在这种情况下所需要的。但是,您需要先从Oracle数据库中以适当的格式导出数据。

     类似资料:
    • 问题内容: 我要从Oracle数据库加载约1亿行并将其插入远程MySQL数据库服务器中,这是一个新挑战。 我将问题分为两部分: 服务器端REST服务器,负责将数据加载到MySQL服务器; 负责加载Oracle数据源的客户端Java应用程序。 在Java方面,我使用了普通的JDBC来加载分页内容并将其通过导线传输到服务器。这种方法效果很好,但是由于我自己使用Oracle的ROWNUM ..... W

    • 很好的一天, 我想更改一些程序代码(主要是SQL代码),因为数据库已经从DB2更改为Oracle。 这里有一个例子,我成功地改变了,但我不是真的了解它,我无法从谷歌找到它。 以下是原始SQL查询代码(使用DB2): 以下是我编辑后的SQL查询代码(成功从Oracle获取数据): 当我分析时,如果我没有将rownum更改为rownum1,我会得到错误,错误是ORA-00923:FROM关键字未在预期

    • 我使用flyway进行部署,并且由于flyway而构建的表都很好。我遇到的问题是schema_version表。无法查询表中的单个列。我只能执行select*。我得到的错误消息是: 10:35:49[选择-0行,0.000秒]1)[错误代码:-206,SQL状态:42703]DB2 SQL错误:SQLCode=-206,SQLState=42703,SQLERRMC=Script,Driver=4

    • 问题内容: 我在使用DB2时遇到问题。我刚刚将db2安装为db2admin并使用了密码。当我尝试连接到数据库时,它已成功完成,并且在运行任何简单的选择查询时,都会出现以下错误:- DB2 SQL错误:SQLCODE = -204,SQLSTATE = 42704,SQLERRMC = DB2ADMIN.LOGIN,DRIVER = 3.57.82 我有一个名为onp的数据库,其中有一个名为“ lo

    • 我对这两种数据类型非常着迷。根据Oracle文档,它们如下所示: BLOB:长度可变的二进制大对象字符串,最长可达2GB(2,147,483,647)长。主要用于保存非传统数据,如语音或混合媒体。BLOB字符串不与字符集相关联,就像FOR BIT数据字符串一样。 CLOB:可变长字符的大型对象字符串,最长可达2GB(2,147,483,647)长。CLOB可以存储单字节字符串或基于字符的多字节数据

    • 我是Talendel的新手,正在使用Talend Open Studio for Big Data V6.2。 我开发了一个简单的Talend ETL作业,它从tFileInputExcel和tOracleInput(维度日期)中获取数据并将数据插入我的本地Oracle数据库。 以下是我的包裹外观: 此作业运行,但我得到0行插入到我的本地Oracle数据库