Chinaunix首页 | 论坛 | 博客
  • 博客访问: 21228
  • 博文数量: 7
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 22
  • 用 户 组: 普通用户
  • 注册时间: 2015-08-13 15:47
文章分类

全部博文(7)

文章存档

2015年(7)

我的朋友
最近访客

分类: Sybase

2015-08-13 16:30:38

      有些用户需要把IQ从AIX或HP平台迁移到Linux平台,由于AIX和HP采用大端字节序,而Linux是采用小端字节序,所以不能使用backup、restore方法进行迁移,只能把表数据导出,然后导入到目标平台的方法实现。在使用文本方式导出数据时,在指定列分隔符或行结束符时有可能会同表中数据发生冲突,IQ提供了二进制方式导出和导入数据的方法可以解决这一问题。
     下面以HP平台(大端字节序)到 Linux(小端字节序)迁移为例,说明使用二进制数据文件方式实现表级快平台迁移的方法:

      1. 把HP-UX64 Itanium平台上(即大端字节序,big endian)的一个IQ数据库表lineitem中的数据导出到一个二进制格式文件中。导出方法如下(即iq server端重定向方法):
 
      --打开server端重定向功能
      SET TEMPORARY OPTION Temp_Extract_Name1 = 'lineitem_binary.dat';
  
      --设置表输出为二进制格式的文件
      SET TEMPORARY OPTION Temp_Extract_Binary = 'on';
      SET TEMPORARY OPTION Temp_Extract_Swap = 'off';
 
      --把表中的记录输出到lineitem_binary.dat文件中
      SELECT * FROM lineitem;
 
      --关闭server端重定向
      SET TEMPORARY OPTION Temp_Extract_Name1 = ''; 
 
   2. 在另一台Suse Linux机器上导入lineitem_binary.dat文件中的数据(前提是lineitem表已经建好)。load table语句如下:
     
      LOAD TABLE lineitem
      ( l_orderkey           BINARY WITH NULL BYTE,
        l_partkey             BINARY WITH NULL BYTE,
        l_suppkey            BINARY WITH NULL BYTE,
        l_linenumber       BINARY WITH NULL BYTE,
        l_quantity            BINARY WITH NULL BYTE,
        l_extendedprice    BINARY WITH NULL BYTE,
        l_discount            BINARY WITH NULL BYTE,
        l_tax                    BINARY WITH NULL BYTE,
        l_returnflag          BINARY WITH NULL BYTE,
        l_linestatus           BINARY WITH NULL BYTE,
        l_shipdate            BINARY WITH NULL BYTE,
        l_commitdate       BINARY WITH NULL BYTE,
        l_receiptdate        BINARY WITH NULL BYTE,
        l_shipinstruct       BINARY WITH NULL BYTE,
        l_shipmode         BINARY WITH NULL BYTE,
        l_comment          BINARY WITH NULL BYTE )
      FROM '/apps/data/lineitem_binary.dat'
      FORMAT BINARY
      STRIP OFF
      QUOTES OFF
      ESCAPES OFF
      BYTE ORDER HIGH;
      COMMIT;
     
   说明:
         (1) 当使用load table装载二进制文件时必须使用"BINARY WITH NULL BYTE",并且要使用FORMAT BINARY子句;
         (2) BYTE ORDER LOW表示二进制文件是从"小端字节序(Little-endian)"平台上的IQ数据库生成的;BYTE ORDER HIGH表示二进制文件是
              从"大端字节序(Big-endian)"平台上的IQ数据库生成的。

      
阅读(1161) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~