ORACLE和SQL SERVER数据交换的二进制问题

本文探讨了在SQL SERVER与ORACLE之间进行数据交换时遇到的二进制数据问题,包括如何从SQL SERVER导出Base64编码的二进制数据,以及如何在ORACLE中处理Base64编码的BLOB字段。解决方案涉及使用存储过程将Base64编码的字符串解码为二进制数据以更新SQL SERVER的目标字段。
摘要由CSDN通过智能技术生成

用BIZTALK交换数据也有不少时间了,主要是SQL SERVER 和ORACLE之间数据交互,同时还有 webservice,file,smtp,pop,ftp,http,excel,access等。曾经遇到的问题也一一解决,未解决的问题也正在尝试解决。以前从SQL到ORACLE遇到二进制交换,研究半天终于解决,后来遇到ORACLE到SQL的二进制交换,研究了几天,有所收获。


1 SQL SERVER

从SQL SERVER中取出数据,其中有的字段为二进制的,比如IMAGE。表结构如下:

ContractedBlock.gif ExpandedBlockStart.gif CodeSqlTable
  CREATE TABLE [dbo].[RYZPK](
    
[id] [bigint] IDENTITY(1,1NOT FOR REPLICATION NOT NULL,
    
[gh] [char](8) COLLATE Chinese_PRC_CI_AS NULL,
    
[zp] [image] NULL,
    
[qr] [smallint] NULL,
    
[sfzh] [nvarchar](18) COLLATE Chinese_PRC_CI_AS NULL,
    
[xm] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
    
[photopath] [nvarchar](255) COLLATE Chinese_PRC_CI_AS NULL,
 
CONSTRAINT [PK_RYZPK] PRIMARY KEY CLUSTERED 
(
    
[id] ASC
)
WITH (IGNORE_DUP_KEY = OFFON [PRIMARY]
ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

如图1 :


使用 SELECT * FROM RYZPK for xml auto,xmldata


得到的结果如下:
ContractedBlock.gif ExpandedBlockStart.gif Codesqlnobase64
<Schema name="Schema1" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">
  
<ElementType name="RYZPK" content="empty" model="closed">
    
<AttributeType name="id" dt:type="i8" />
    
<AttributeType name="gh" dt:type="string" />
    
<AttributeType name="zp" dt:type="uri" />
    
<AttributeType name="qr" dt:type="i2" />
    
<AttributeType name="sfzh" dt:type="string" />
    
<AttributeType name="xm" dt:type="string" />
    
<AttributeType name="photopath" dt:type="string" />
    
<attribute type="id" />
    
<attribute type="gh" />
    
<attribute type="zp" />
    
<attribute type="qr" />
    
<attribute type="sfzh" />
    
<attribute type="xm" />
    
<attribute type="photopath" />
  
</ElementType>
</Schema>
<RYZPK xmlns="x-schema:#Schema1" id="13" gh="00659   " zp="dbobject/RYZPK[@id='13']/@zp" />
<RYZPK xmlns="x-schema:#Schema1" id="14" gh="08266   " zp="dbobject/RYZPK[@id='14']/@zp" />
<RYZPK xmlns="x-schema:#Schema1" id="15" gh="00145   " zp="dbobject/RYZPK[@id='15']/@zp" />
<RYZPK xmlns="x-schema:#Schema1" id="16" gh="10324   " zp="dbobject/RYZPK[@id='16']/@zp" />
<RYZPK xmlns="x-schema:#Schema1" id="17" gh="08772   " zp="dbobject/RYZPK[@id='17']/@zp" />
<RYZPK xmlns="x-schema:#Schema1" id="18" gh="10364   " zp="dbobject/RYZPK[@id='18']/@zp" />
<RYZPK xmlns="x-schema:#Schema1" id="19" gh="07044   " zp="dbobject/RYZPK[@id='19']/@zp" />

zp字段为二进制,得出的xml文档中不可能解析出二进制流,于是使用dbobject/RYZPK[@id='1']/@zp来替代,意思就是在RYZPK中主键为id='1'的记录,字段zp的值,相当于C++编程时的指针,传递的是一个内存地址,而不是实际值。

使用SELECT * FROM RYZPK for xml auto生成的架构文件如下:

 

ContractedBlock.gif ExpandedBlockStart.gif Codenobase64xsd
<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://ryzpk_notbase64" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  
<xs:annotation>
    
<xs:appinfo>
      
<msbtssql:sqlScript value="select * from ryzpk for xml auto" xmlns:msbtssql="http://schemas.microsoft.com/BizTalk/2003" />
    
</xs:appinfo>
  
</xs:annotation>
  
<xs:element name="ryzpk_notbase64">
    
<xs:complexType>
      
<xs:sequence>
        
<xs:element minOccurs="0" maxOccurs="unbounded" name="ryzpk" xmlns:q1="http://ryzpk_notbase64" type="q1:ryzpkType" />
      
</xs:sequence>
    
</xs:complexType>
  
</xs:element>
  
<xs:complexType name="ryzpkType">
    
<xs:attribute name="id" type="xs:long" />
    
<xs:attribute name="gh" type="xs:string" />
    
<xs:attribute name="zp" type="xs:anyURI" />
    
<xs:attribute name="qr" type="xs:short" />
    
<xs:attribute name="sfzh" type="xs:string" />
    
<xs:attribute name="xm" type="xs:string" />
    
<xs:attribute name="photopath" type="xs:string" />
  
</xs:complexType>
</xs:schema>

 

可以看出image字段zp类型为xs:anyURI

如图2:


 

1.2 要想真正解析出二进制

可以将二进制转换成BASE64编码形势保存在xml中,方法如下:
 
  SELECT * FROM RYZPK for xml auto ,binary base64,xmldata
  得到的结果如下:

 

ContractedBlock.gif ExpandedBlockStart.gif Codebase64
  <Schema name="Schema1" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">
  
<ElementType name="RYZPK" content="empty" model="closed">
    
<AttributeType name="id" dt:type="i8" />
    
<AttributeType name="gh" dt:type="string" />
    
<AttributeType name="zp" dt:type="bin.base64" />
    
<AttributeType name="qr" dt:type="i2" />
    
<AttributeType name="sfzh" dt:type="string" />
    
<AttributeType name="xm" dt:type="string" />
    
<AttributeType name="photopath" dt:type="string" />
    
<attribute type="id" />
    
<attribute type="gh" />
    
<attribute type="zp" />
    
<attribute type="qr" />
    
<attribute type="sfzh" />
    
<attribute type="xm" />
    
<attribute type="photopath" />
  
</ElementType>
</Schema>
<RYZPK xmlns="x-schema:#Schema1" id="13" gh="00659   " zp="/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a" />
<RYZPK xmlns="x-schema:#Schema1" id="14" gh="08266   " zp="/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a" />
<RYZPK xmlns="x-schema:#Schema1" id="15" gh="00145   " zp="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" />
<RYZPK xmlns="x-schema:#Schema1" id="16" gh="10324   " zp="/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAFAAPADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDoM0YpB/OlpEi59KXPNNozQA4HFGe3akzRnnqaBDs0ZpvNGc0wHZoH1pufejNIB2eKCajzijdzQBJnuKTPp0qIvyRmmlucUAS5o3c81EWx3pN9AEhbuKXdUWTj0oy3GCPegCTNGenNMDCgsB+FAD8+lIDxTN4z70Z596AJM5NGaZk/lRye1AD8+9G6m96M9KAHZNKCQaZjFOHH0oAdupMn06/5/wA/5ydqUcnn8qAE6dzRSZ5o4zQMXgg0dKM8U0n9aAHUZ600HFGe9ADj0pCcDPWkycUmaAHbutNLe9NLBeKikkC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值