我们在开发时经常会涉及到这样一个问题:把ASE数据库中一些表的数据导入到IQ数据库中。从功能上来说,有两类方法:
(1) 使用 bcp out 把ASE数据库中的某个表的数据导出到文件中,然后使用LOAD TABLE导入到IQ数据库的相应表中.
(2) 使用INSERT LOCATION语句通过代理技术把数据从ASE中导入到IQ中.
本文先介绍第一种方法,在后续的文章中再介绍第2种方法。为了便于说明,我们假设ASE数据库中有一个 customers 表. 下面介绍的两个
示例将介绍如何把这个表中的数据导入到Sybase IQ相应的customers 表中. 需要注意,一定不要使用bcp in往IQ数据库中导入数据,因为这种方法会到值很差的性能,并会导致IQ Server出现问题!
示例1 (bcp 出的数据文件不符合IQ多线索装载条件,使用单线索装载)
bcp customer out customer.dat -c -Ump2user -P111111 -t'|!' -r'\n'
LOAD TABLE customer
(
customer_key '|!' ,
customer_first_name '|!' ,
state '|!' ,
postal_code '|!' ,
phone_number '\x0a'
)
FROM 'c:\load\customer.dat'
ESCAPES OFF
QUOTES OFF
NOTIFY 100000
WITH CHECKPOINT ON;
COMMIT;
示例2 (bcp 出的数据文件符合IQ多线索装载条件,使用多线索装载。这种方法的性能最好!)
bcp customer out customer.dat -c -Ump2user -P111111 -t'|!' -r'|!\n'
LOAD TABLE customer
(
customer_key '|!' ,
customer_first_name '|!' ,
state '|!' ,
postal_code '|!' ,
phone_number '|!'
)
FROM 'c:\load\customer.dat'
ESCAPES OFF
QUOTES OFF
NOTIFY 100000
ROW DELIMITED BY '\x0a'
WITH CHECKPOINT ON;
COMMIT;
阅读(4154) | 评论(0) | 转发(0) |