Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1634348
  • 博文数量: 201
  • 博客积分: 2812
  • 博客等级: 少校
  • 技术积分: 3029
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-18 18:28
个人简介

从事数据库工作多年,目前看好分布式NeSQL/HTAP数据库在企业客户市场的发展。未来的主要方向是——致力于 NewSQL/HTAP 数据库的推广普及。

文章存档

2016年(1)

2015年(8)

2014年(23)

2013年(50)

2012年(32)

2011年(87)

分类: Sybase

2014-12-26 16:21:56

      有些用户需要把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数据库生成的。

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

lion_sybiq_1272016-07-20 10:49:43

eisen:我建议使用cis的方式用insert proxy_table方式插入...这样更省心

这种方法的确是很简单、灵活。但是对于大数据量性能很差。

回复 | 举报

eisen2016-07-13 11:25:19

我建议使用cis的方式用insert proxy_table方式插入...这样更省心

alexsenfei2016-01-27 09:31:04

你好。为什么我用你的方法二进制导出,导入后会错行还有乱码。