Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1634453
  • 博文数量: 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

2011-04-18 15:40:49

2. 不同字节序之间跨平台迁移
   对于不同字节序之间(例如从AIX平台迁移到Linux x86_64平台)的IQ跨平台迁移不能采用backup和restore方法。而只能在新平台上创建数据库和表,然后采用源平台上export所有用户表数据,然后load到目标平台的数据库中。
   对于export和load tables有两种方式,一种是采用文本格式;另一种是采用binary格式。下面就举例说明这两种方式的用法
 
(1) 二进制格式
 
下面以nation表的迁移为例加以说明:
 
--export 语句
set temporary option temp_extract_row_delimiter = '\x0a';
set temporary option temp_extract_column_delimiter = '|!';
set temporary option temp_extract_null_as_empty = 'ON';
set temporary option temp_extract_append = 'ON';
set temporary option temp_extract_binary = 'ON';
set temporary option temp_extract_swap = 'OFF';
set temporary option temp_extract_name1 = 'c:\export\nation.dat';
select * from nation;
set temporary option temp_extract_name1 = '';

 
说明:对于二进制格式的export,temp_extract_binary、temp_extract_swap和temp_extract_name1是必须设置的选项,其他options是可选的。
 
--load 语句
LOAD TABLE nation
(
  n_nationkey BINARY WITH NULL BYTE ,
  n_name BINARY WITH NULL BYTE ,
  n_regionkey BINARY WITH NULL BYTE ,
  n_comment BINARY WITH NULL BYTE
)
FROM 'c:\load\nation.dat'
FORMAT BINARY
STRIP ON
ESCAPES OFF
QUOTES OFF
BYTE ORDER HIGH
NOTIFY 500000
WITH CHECKPOINT ON;
COMMIT;

 
说明:对于二进制格式的load table语句列分割符必须指定为 BINARY WITH NULL BYTE,此外FORMAT子句必须指定为 BINARY,BYTE ORDER HIGH表示源平台是“大端字节序”,对于“小端字节序”为 BYTE ORDER LOW。
 
 (2) 文本格式
 
下面以nation表的迁移为例加以说明:
 
--export
set temporary option temp_extract_row_delimiter = '\x0a';
set temporary option temp_extract_column_delimiter = '|!';
set temporary option temp_extract_null_as_empty = 'ON';
set temporary option temp_extract_append = 'ON';
set temporary option temp_extract_binary = 'OFF';
set temporary option temp_extract_swap = 'OFF';
set temporary option temp_extract_name1 = 'c:\export\nation.dat';
select * from nation;
set temporary option temp_extract_name1 = '';
 
--load
LOAD TABLE nation
(
  n_nationkey '|!' ,
  n_name '|!' ,
  n_regionkey '|!' ,
  n_comment '|!'
)
FROM 'c:\load\nation.dat'
FORMAT ASCII
STRIP ON
ESCAPES OFF
QUOTES OFF
NOTIFY 500000
ROW DELIMITED BY '\x0a'
WITH CHECKPOINT ON;
COMMIT;
 
   对于文本格式和二进制格式,sybase官方给的建议是采用二进制格式的性能更好一些。
   如果数据库中有很多表要迁移,可以使用相应的工具。下面的地址有一个IQ工具,可以方便的实现脚本的生成:

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