把数据从Sybase ASE导入Sybase IQ的方法_1

4290阅读 0评论2013-06-03 lion_sybiq_127
分类:Sybase

我们在开发时经常会涉及到这样一个问题:把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;
上一篇:把一个表移动到另一个IQ dbspace的方法
下一篇:IQ Simplex从15.2升级到15.4的方法和步骤