程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> GreenplumqueryOracleviaDLINK

GreenplumqueryOracleviaDLINK

編輯:Oracle教程

在系統日常生產過程中,如何從Oracle數據庫同步一些配置表到GP庫個問題。

先來說說之前使用的方式:

0. 使用第3方工具從Oracle導出純文本格式,存放在本地;

1. 使用GP外部表加載入庫

這種方式優點是對於需要同步大數據量的表的時候性能非常高;缺點是稍顯麻煩,最主要的是非實時的,存在著任務調度周期和導出導入時間周期。

對此我的解決辦法是簡化整個過程並實時查詢:

0. 使用GP WEB外部表技術直接查詢Oracle數據表

由於是配置表,數據量一般都非常小,幾k到幾w條的記錄采用這種方式幾乎是瞬間的消耗。

首先是Oracle的源表:

[oracle@gtlions181 ~]$ sqlplus gtlions/gtlions

SQL*Plus: Release 10.2.0.5.0 - Production on Thu May 8 15:41:06 2014

Copyright (c) 1982, 2010, Oracle. All Rights Reserved.

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select * from test;

ID NAME
---------- -----
1 a
2 b

然後在GP中直接查詢Oracle的表:
[gpadmin@gtlions181 ~]$ psql gtlions
psql (8.2.15)
Type "help" for help.
gtlions=# drop external table if exists sqlplus_test;
DROP EXTERNAL TABLE
gtlions=# create external web table sqlplus_test(id int,name varchar(5)) execute 'sqlplus -S gtlions/gtlions@gt10g <<EOF
gtlions'# set echo OFF;
gtlions'# set heading OFF;
gtlions'# set feedback off;
gtlions'# set linesize 32767;
gtlions'# set pagesize 0;
gtlions'# select id||'',''||name from test ;
gtlions'# exit;
gtlions'# EOF' on master format 'csv' (header);
NOTICE: HEADER means that each one of the data files has a header row.
CREATE EXTERNAL TABLE
gtlions=# select * from sqlplus_test;
id | name
----+------
1 | a
2 | b
(2 rows)

so easy,Bingo!
-EOF

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved