|
Oracle磁盘数据库数据导入Altibase内存数据库:
step1、根据Oracle磁盘数据库中表Tab_1和Tab_2的创建语句,在Altibase中创建相同结构的Tab_1和Tab_2。
step2、在制定目录下创建getdata.sql脚步,getdata.sql脚步内容如下:
SET SERVEROUTPUT on;
SET TIMING off;
SET FEEDBACK off;
SET VERIFY off;
SET LINESIZE 2000;
SET TRIMSPOOL ON;
SET TIMING OFF;
--undefine TABLE_NAME;
define TABLE_NAME=&&1
spool &&TABLE_NAME..sql
EXEC DBMS_OUTPUT.ENABLE(5000);
EXEC DBMS_OUTPUT.PUT_LINE('SET NEWPAGE 0;');
EXEC DBMS_OUTPUT.PUT_LINE('SET SPACE 0;');
EXEC DBMS_OUTPUT.PUT_LINE('SET LINESIZE 2000;');
EXEC DBMS_OUTPUT.PUT_LINE('SET PAGESIZE 0;');
EXEC DBMS_OUTPUT.PUT_LINE('SET ECHO OFF;');
EXEC DBMS_OUTPUT.PUT_LINE('SET FEEDBACK OFF;');
EXEC DBMS_OUTPUT.PUT_LINE('SET HEADING OFF;');
EXEC DBMS_OUTPUT.PUT_LINE('SET TERM OFF;');
EXEC DBMS_OUTPUT.PUT_LINE('SET TRIMSPOOL ON;');
EXEC DBMS_OUTPUT.PUT_LINE('SET TIMING OFF;');
EXEC DBMS_OUTPUT.PUT_LINE('SET RECSEP OFF;');
EXEC DBMS_OUTPUT.PUT_LINE('--SET RECSEPCHAR @;');
EXEC DBMS_OUTPUT.PUT_LINE('ALTER SESSION SET NLS_DATE_FORMAT=''YYYY/MM/DD HH24:MI:SS'';');
EXEC DBMS_OUTPUT.PUT_LINE('spool '||'&&TABLE_NAME..dat' );
DECLARE
column_name varchar2(40);
last_column varchar2(40);
sqltext char(50);
CURSOR C1(last_column VARCHAR2 ) IS SELECT DECODE( COLUMN_NAME,last_column,COLUMN_NAME||'||''
R-r
''',
COLUMN_NAME||'||''^C-c^''||') FROM USER_TAB_COLUMNS WHERE TABLE_NAME = UPPER('&&TABLE_NAME') ORDER BY COLUMN_ID;
BEGIN
SELECT COLUMN_NAME INTO last_column FROM USER_TAB_COLUMNS WHERE TABLE_NAME=UPPER('&&TABLE_NAME') AND
COLUMN_ID = (SELECT MAX( COLUMN_ID )
FROM USER_TAB_COLUMNS WHERE TABLE_NAME = UPPER('&&TABLE_NAME') );
dbms_output.put_line( 'SELECT ' );
OPEN C1( last_column ) ;
LOOP
FETCH C1 INTO column_name;
EXIT WHEN C1%NOTFOUND;
dbms_output.put_line( column_name );
END LOOP;
CLOSE C1;
dbms_output.put_line( ' FROM &&TABLE_NAME; ') ;
END;
/
EXEC DBMS_OUTPUT.PUT_LINE('spool off;');
EXEC DBMS_OUTPUT.PUT_LINE('exit ;');
spool off;
start &&TABLE_NAME..sql
step3、分别创建tab_1.sql和tab_2.sql脚步。
tab_1.sql脚步内容如下:
SET NEWPAGE 0;
SET SPACE 0;
SET LINESIZE 2000;
SET PAGESIZE 0;
SET ECHO OFF;
SET FEEDBACK OFF;
SET HEADING OFF;
SET TERM OFF;
SET TRIMSPOOL ON;
SET TIMING OFF;
SET RECSEP OFF;
--SET RECSEPCHAR @;
ALTER SESSION SET NLS_DATE_FORMAT='YYYY/MM/DD HH24:MI:SS';
spool tab_1.dat
SELECT
ACCT_ID||'^C-c^'||
COM_TYPE||'^C-c^'||
SERV_ID||'^C-c^'||
END_COM_VAL||'^C-c^'||
CUR_COM_VALUE||'^C-c^'||
EFF_DATE||'^C-c^'||
EXP_DATE||'
R-r
'
FROM tab_1;
spool off;
exit ;
tab_2.sql脚步内容如下:
SET NEWPAGE 0;
SET SPACE 0;
SET LINESIZE 2000;
SET PAGESIZE 0;
SET ECHO OFF;
SET FEEDBACK OFF;
SET HEADING OFF;
SET TERM OFF;
SET TRIMSPOOL ON;
SET TIMING OFF;
SET RECSEP OFF;
--SET RECSEPCHAR @;
ALTER SESSION SET NLS_DATE_FORMAT='YYYY/MM/DD HH24:MI:SS';
spool tab_2.dat
SELECT
ACCT_ID||'^C-c^'||
COM_TYPE||'^C-c^'||
SERV_ID||'^C-c^'||
END_COM_VAL||'^C-c^'||
CUR_COM_VALUE||'^C-c^'||
EFF_DATE||'^C-c^'||
EXP_DATE||'
R-r
'
FROM tab_2;
spool off;
exit ;
[ 本帖最后由 tom_111 于 2009-4-4 23:06 编辑 ] |
|