oracle利用exp和imp得到部分表的sql语句

上一篇 / 下一篇  2011-12-02 11:47:50 / 个人分类:工作总结

广西161测试环境,月表数据需要手工重建,否则办理业务时经常提示表不存在。现在我导出了201107月份的月表数据的创建语句,在新月份测试时,可以替换为相应的月份,创建新的月表的数据。
 
实现方式:
1.把ec和zk用户下要导出的表存入文件中。
导出了这些表:
select table_name from all_tables where table_name like '%201107%' and owner='ZK'
select table_name from all_tables where table_name like '%201107%' and owner ='EC';
 
可用以下java文件将表名导入到一个文件中:
import java.io.*;
import java.sql.*;
public class GetTable
{
public void gettablename(String sqlcon,String user,String pwd,String sql,String filename)
{
  ResultSet rs;
  try
  {
  Class.forName("oracle.jdbc.driver.OracleDriver");
  Connection dbcon=DriverManager.getConnection(sqlcon,user,pwd);
   Statement ps=dbcon.createStatement();
   rs=ps.executeQuery(sql);
   StringWriter sw=new StringWriter();
   while(rs.next())
   {
     String s= rs.getString("table_name");
     sw.write(s);
     sw.append(',');
     sw.close();
  //   System.out.print(s); 
   }
     StringBuffer sb=sw.getBuffer();
     String s=new String(sb);
    // System.out.println(os);
    BufferedWriter ut=new BufferedWriter (new FileWriter(filename));
    int lh=os.length();
    out.write(os,0,lh);
    out.close();  
   dbcon.close();
  }
catch(Exception   e)
{e.printStackTrace();}
}
public static void main(String[] args) {
GetTable t=new GetTable();
t.gettablename(args[0],args[1],args[2],args[3],args[4]);
}
}
 
2.用exp将导出文件中的表导出为dmp
3.用imp将dmp 文件转化为sql语句
 
可用以下批处理语句完成。其中d:\3.txt为ec需要导出的表,d:\4.txt为zk需要导出的表
@set content= 
@for /F "delims=" %%i in (d:\3.txt)  do set content=%content% %%i
@echo "导出ec用户下7月份月表数据......"
@exp  ec/ec@saleyy rows=n file= d:\ec.dmp tables=%content%
@set content2= 
@for /F "delims=" %%i in (d:\4.txt)  do set content2=%content2% %%i
@echo "导出zk用户下7月份月表数据......"
@exp zk/zk_007@saleyy  rows=n file= d:\zk.dmp tables=%content2%
@echo "将导出的数据生成sql文件......"
imp ec/ec@saleyy rows=n buffer=50 full=y file=d:\ec.dmp indexfile=d:\ec.sql
imp zk/zk_007@saleyy rows=n buffer=50 full=y file=d:\zk.dmp indexfile=d:\zk.sql
@pause
 
4.处理导出的sql语句(去掉rem,修改月份数据)
5.导入相应月份表的数据。
执行方法:在oracle 命令窗口执行 @D:\ec.sql 和@D:\zk.sql
 

TAG:

 

评分:0

我来说两句

日历

« 2024-05-15  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 5489
  • 日志数: 7
  • 建立时间: 2010-05-22
  • 更新时间: 2012-02-20

RSS订阅

Open Toolbar