String deleteSql = " DROP database link linkfwq ";
commConstantDao.executeSQLUpdate(deleteSql);
String linkfwqSql = " create database link linkfwq connect to test identified by test using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.221)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) )'";
commConstantDao.executeSQLUpdate(linkfwqSql);
// 少表字段的表
String sql = " select table_name, column_name , DATA_TYPE,DATA_LENGTH,DATA_PRECISION , DATA_SCALE ,NULLABLE,DATA_DEFAULT ,COLUMN_ID from user_tab_columns ,";
sql+= " (select table_name a, column_name b from user_tab_columns where table_name not in (SELECT TABLE_NAME FROM USER_TABLES minus SELECT TABLE_NAME FROM USER_TABLES@linkfwq) ";
sql+= " minus ";
sql+= "select table_name ,column_name from user_tab_columns@linkfwq where table_name not in (SELECT TABLE_NAME FROM USER_TABLES minus SELECT TABLE_NAME FROM USER_TABLES@linkfwq)) t " +
" where t.a = table_name and t.b = column_name order by TABLE_NAME , COLUMN_ID ";
List<Object[]> list = commConstantDao.executeSQLQuery(sql);
StringBuffer addColumnBuf = new StringBuffer(""); // 增加字段的SQL集合
String curSql = "";
for (Object[] obj : list) {
String TABLE_NAME = (String) obj[0];
String COLUMN_NAME = (String) obj[1];
String DATA_TYPE = (String) obj[2];// 数据类型
BigDecimal DATA_LENGTH_BIG = (BigDecimal) obj[3];
Long DATA_LENGTH = DATA_LENGTH_BIG.longValue();
Long DATA_PRECISION = null;
if(obj[4]!= null){
BigDecimal DATA_PRECISION_BIG = (BigDecimal) obj[4];
DATA_PRECISION = DATA_PRECISION_BIG.longValue();
}
Long DATA_SCALE = null;
if( obj[5]!=null){
BigDecimal DATA_SCALE_BIG = (BigDecimal) obj[5];
DATA_SCALE = DATA_SCALE_BIG.longValue();
}
String NULLABLE = (String) obj[6]; // 是否为NULL
String DATA_DEFAULT = (String) obj[7]; // 默认值
// ALTER TABLE APS_PLAN_SCHEDULE_TIME ADD (ARRIVE_PROCESS_TIME NUMBER DEFAULT 1 NOT NULL);
curSql = "ALTER TABLE " + TABLE_NAME + " ADD ( "+ COLUMN_NAME ;
if(DATA_TYPE.equals("NUMBER")){
// int
if(DATA_PRECISION == null){
curSql += " INTEGER ";
}else{// double, float 等
curSql += " NUMBER( " + DATA_PRECISION +" ,"+DATA_SCALE +" )";
}
}else if(DATA_TYPE.equals("VARCHAR2")){// VARCHAR2(15 BYTE)
curSql += " VARCHAR2 ( "+ DATA_LENGTH +")" ;
}else if(DATA_TYPE.equals("DATE")){
curSql += " DATE " ;
}else if(DATA_TYPE.equals("FLOAT")){
curSql += " FLOAT " ;
}
// 默认值 和 是否为空
if(!StringUtil.isNullOrEmpty(DATA_DEFAULT)){
curSql += " DEFAULT "+ DATA_DEFAULT;
}
if(NULLABLE.equals("N")){
curSql += " NOT NULL ";
}
curSql += " );";
addColumnBuf.append(curSql);
addColumnBuf.append("\n");
curSql = "";
}
相关推荐
oracle通过ODBC建立dblink访问SqlServer数据库配置
DBLINK实现两个数据库间表数据同步---张金总结版
本文详细描述了在oracle10g或11g中使用dblink访问sql server,使用oracle的透明网关来访问异构的数据库,方便一些习惯使用oracle的开发人员操作sql server数据库
oracle 使用dblink方式 连接远程数据库,内有详细描述,亲测可以
两台数据库服务器之间通过创建dblink进行数据库连接,并且数据库之间可以相互进行数据查询读取操作,操作简单易懂
oracle使用dblink在两个数据库中比对数据库表的行数是否一致
执行存储过程,通过指定目标数据库登录信息,动态生成dblink,打开游标,按批次插入本地指定表中,每批次1万条数据。同步记录和日志信息写在自动生成的sync_log表中。同步完成后自动删除动态生成的存储过程、dblink...
Oracle数据库下创建dblink的sql语句,附带解释说明
oracle数据库之间同步数据 dbLink +job方式
.
.
oracle通过odbc方式,连接到sqlserver数据库。比透明网关方式更加简单
Oracle-不同数据库DBLINK导数据使用说明
利用oracle快照dblink解决数据库表同步问题.txt
以迁移scott用户下所有的表为例演示Oracle使用dblink导用户下的所有表数据
oracle数据库用DBLINK连接另一个数据库的两种方法.txt
如何建立达梦数据库的DBLINK,告诉你如何在个达梦数据库之间使用MAL链路的方式去创建DBLINK方便访问
建立一个dblink连接语句,可以直接使用,亲测可以,建立连接
Linux下ORACLE 使用dblink连接mysql_lijilinjy的专栏-CSDN博客.mhtml
dblink dblink dblink dblink dblink dblink dblink dblink dblink dblink dblink dblink dblink dblink dblink dblink dblink dblink