概述

最近从Oracle数据库导数据到金仓数据库(KingBase),有些表迁移失败,故手动进行迁移。将某表数据从Oracle导出为CSV文件后,却没找到金仓数据库如何从外部文件导入数据(可能是因为我的版本是便宜版本?),只好直接使用SQL语句迁移数据。

方法一:生成SQL语句

以某表格为例,从Oracle查询所有数据后(生成SqlText),将**【查询结果】**(insert语句)复制到金仓数据库管理工具中去执行即可。代码示例如下:

select 'insert into psm.net_channel values(' || CH_NO||','''||CH_NAME||''', '||ERTU_NO||','
       ||PROTOCOL||','''||ROUTER1_ADDRESS||''','''||IP1_ADDRESS||''','||PORT1_NO||','''||ROUTER2_ADDRESS||''',
       '''||IP2_ADDRESS||''','||PORT2_NO||','||ON_VALVE||','||OFF_VALVE||','||COMM1_STATUS||',
       '||ROUTER1_STATUS||','||COMM2_STATUS||','||ROUTER2_STATUS||','''||START_TIME||''','''||STOP_TIME_POINT||''',
       '||RUN_TIME||','||STOP_TIME||','||RUN_RATIO||','||SUCCESS_COUNT||','||FAIL_COUNT||','||ERROR_CODE_RATIO||',
       '||STAT_TAG||');' AS SQLTEXT
from net_channel;

方法二:生成SQL文件

spool /opt/log.txt; 

select 'insert into psm.MV_HIS_DATA1 values( 401441 ,''' ||to_char(DATA_TIME,'yyyy-mm-dd hh24:mi:ss')|| ''',' ||YC_RAW_VAL|| ',' ||YC_VAL|| ');' from WF_YC_HISTORY_DATA1 where ANALOG_NO = 300696; 

spool off;