`

将Oracle中BLOB字段同步到SQLSERVER的IMAGE字段中

    博客分类:
  • Java
阅读更多

近日,公司项目要求将Oracle数据库中的大字段BLOB数据同步到SQLSERVER中IMAGE大字段中。

网上找了些列子,再结合自己项目实际情况进行编写,代码如下:

            String hql2 = "from Datp t where t.status='" + Constant.YWZT_0 + "'";
            List<Datp> list2 = this.getSession().createQuery(hql2).list(); // ORACLE 连接
            if (list2.size() > 0) {
                for (int i = 0; i < list2.size(); i++) {
                    Datp datp = list2.get(i);
                    String lsh = datp.getLsh();
                    conn = DbUtil.getConnection(DRIVERNAME, URL, USERNAME, PASSWORD);
                    conn.setAutoCommit(false);
                    PreparedStatement stmt = conn.prepareStatement("INSERT INTO DATP(LSH,TPSJ) VALUES (?,?)");
                    stmt.setString(1, lsh);
                    // 通过流水号读取Oracle BLOB字段
                    Datp datp1 = (Datp) this.getSession().createQuery("from Datp t where t.lsh='" + lsh + "'").uniqueResult();
                    byte[] tpsj = datp1.getTpsj(); // 获取Oracle BLOB字段
                    InputStream in = new ByteArrayInputStream(tpsj); // byte[]转换为InputStream
                    stmt.setBinaryStream(2, in, in.available()); // 存入图片,SQLSERVER连接
                    stmt.execute();
                    conn.commit();
                    stmt.close();
                    conn.close();
                    // 更新记录同步状态
                    String sql = "UPDATE datp t SET t.status = '" + Constant.YWZT_1 + "' WHERE t.id = '" + datp.getId() + "'";
                    this.getSession().createSQLQuery(sql).executeUpdate();
                }
            }
    查看插入SQLSERVER中的大字段是否成功,代码如下:
   try {
            String DRIVERNAME = Factory.getSysPara().getProperty("snapshot_sqlserver_driver");
            String URL = Factory.getSysPara().getProperty("snapshot_sqlserver_url");
            String USERNAME = Factory.getSysPara().getProperty("snapshot_sqlserver_user");
            String PASSWORD = Factory.getSysPara().getProperty("snapshot_sqlserver_password");
            conn = DbUtil.getConnection(DRIVERNAME, URL, USERNAME, PASSWORD);
            PreparedStatement ps = conn.prepareStatement("select * from datp where lsh = ?");
            ps.setString(1, "51010074000001");
            ResultSet rs = ps.executeQuery();
            rs.next();
            InputStream in = rs.getBinaryStream("tpsj");
            System.out.println(in.available());
            FileOutputStream out = new FileOutputStream("c:/test.png");
            byte[] b = new byte[1024];
            int len = 0;
            while ((len = in.read(b)) != -1) {
                out.write(b, 0, len);
                out.flush();
            }
            out.close();
            in.close();
            rs.close();
            ps.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
 
分享到:
评论

相关推荐

    ORACLE中BLOB字段导入到SQL SERVER中的IMAGE字段

    本篇文章将详细探讨如何将ORACLE数据库中的BLOB(Binary Large Object)字段导入到SQL SERVER中的IMAGE字段,这通常涉及到数据转换、数据迁移以及可能的数据类型兼容性问题。 首先,让我们了解BLOB和IMAGE字段的...

    sql server中的image类型的数据导出到oracle的clob字段中

    在本文中,我们将讨论如何将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中。 Image 类型在 SQL Server 中的应用 在 SQL Server 中,Image 类型用于存储二进制大对象(BLOB),如图像、音频、视频...

    C#访问oracle数据库类,带blob字段读写

    写入Blob字段时,先创建`OracleParameter`对象,将其Direction设置为` ParameterDirection.Input `,OracleDbType设置为`OracleDbType.Blob`,然后赋值。以下是一个示例: ```csharp // 读取Blob字段 using ...

    判断blob字段是否为空

    在关系型数据库中,如Oracle、MySQL、SQL Server等,BLOB字段提供了一种高效的方式,用于处理和存储大数据量的非结构化信息。 ### 判断BLOB字段是否为空的必要性 在实际应用中,判断BLOB字段是否为空对于数据完整...

    sqlserver-oracle 数据类型对照

    - `image`在SQL Server中对应Oracle的`BLOB`,用于存储二进制大数据。 接下来,我们讨论SQL Server和Oracle的函数对照: 1. **字符函数**: - `ASCII`和`CHR`用于字符的ASCII编码转换。 - `CONCAT`和`+`运算符...

    c# winform 操作oracle数据库的Blob字段,把图片存储到数据库,保存图片到数据库

    本文将详细讲解如何操作Oracle数据库中的Blob字段,以实现图片的存储和读取。Blob(Binary Large Object)字段类型用于存储大量的二进制数据,如图片、文档等。 首先,确保已安装了Oracle的客户端库,如ODP.NET ...

    Sql Server至ORACLE 数据迁移

    对于二进制文件,可能需要先将它们保存到文件系统,然后在Oracle中创建BFILE或BLOB字段来引用这些文件。 "SqlServer_Oracle.exe"这个文件很可能是一个数据迁移工具,它可以简化这个过程,自动处理数据抽取、转换和...

    ADO读写blob字段

    ### ADO读写BLOB字段详解 #### 一、引言 在软件开发过程中,处理大量二进制数据(如图像、音频文件等)是非常常见的需求。这些数据通常被称为二进制大对象(BLOB,Binary Large Object)。本文将详细介绍如何使用...

    从SQL Server 向Oracle迁移的技术实现方案

    总结而言,从SQL Server到Oracle的数据库迁移不仅涉及数据类型转换的细节,还需要对源数据库中的特殊功能如自动增长字段进行等效替代设计,确保目标数据库能够无缝接替原有的数据管理和业务逻辑。这一过程需要细致...

    ODI SQL Server到Oracle数据库的照片集成.doc

    【知识点详解】 ...通过上述过程,ODI 使用 Jython 脚本实现了 SQL Server 中 `image` 类型数据到 Oracle 数据库 Blob 字段的转换。这种转换处理了数据类型差异,确保了二进制数据完整无损地迁移。

    SQL SERVER 数据库迁移到ORACLE配置 SQL SERVER 数据库转到ORACLE配置.doc

    在将SQL SERVER数据库迁移到ORACLE的过程中,涉及多个步骤和注意事项。以下是对这些步骤的详细说明: 1. **配置ORACLE客户端**: - 使用Net Configuration Assistant进行配置,这是一个图形化工具,帮助设置与...

    oracle mysql sqlser2000对大数据对象的操作

    例如,使用PreparedStatement的setBinaryStream方法可将二进制数据插入BLOB字段,而ResultSet的getBinaryStream方法则用于读取BLOB数据。此外,使用Blob接口,开发者可以更方便地处理大数据对象的生命周期,如读取、...

    mysql,sqlserver,oracle三种数据库的大对象存取解析.docx

    本文将对MySQL、SQL Server和Oracle这三种主流关系型数据库系统中的大对象存取进行详细解析。 **MySQL中的大对象存取** MySQL支持几种不同类型的BLOB类型,包括TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。这些类型...

    MYSQL,SQLSERVER,ORACLE常用的函数

    根据提供的标题和描述,本文将详细介绍在MySQL、SQL Server以及Oracle数据库中常用的函数。这些函数主要分为几大类:字符串处理函数、数值处理函数、日期处理函数、转换函数以及其他一些特殊用途的函数。 ### 字符...

    mysql,sqlserver,oracle三种数据库的大对象存取

    在SQL Server中,处理大对象数据通常使用`IMAGE`类型(SQL Server 2005及以前版本)或`VARBINARY(MAX)`、`IMAGE`(SQL Server 2008及以后版本)。`IMAGE`类型可以存储的最大数据量理论上不受限,但实际受物理存储...

    大文本(Blob)对象处理

    例如,Oracle数据库支持`LongRaw`和`Raw`类型,而SQL Server则支持`Image`和`Text`类型,因此,在设计数据库表结构时,需要根据实际使用的数据库类型来确定Blob字段的具体类型。 - **性能优化:** 当处理较大的Blob...

    保存图片到数据库 delphi

    以上代码展示了如何通过Delphi将图片数据转换为内存流,然后将这些流插入到数据库的BLOB或VARBINARY(MAX)字段中。在检索图片时,只需从数据库读取流数据并写入到文件即可。注意,在实际应用中,需要根据具体数据库...

    DELPHI向SQL数据库中存储图片

    将返回的结果集绑定到TADOTable或TADODataSet组件,读取BLOB字段的数据流到一个新的TMemoryStream对象。 6. **显示图片**:将TMemoryStream对象的内容赋值给TImage组件的Picture property,从而在界面上显示图片。 ...

    oracle和sql数据类型

    Oracle 和 SQL 数据类型是数据库管理系统中用于定义和存储数据的基础组件。它们决定了数据的结构、大小以及如何进行处理。以下是两种数据库系统中主要数据类型的详细比较: **Oracle 数据类型** 1. **Char**: Char...

Global site tag (gtag.js) - Google Analytics