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';
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: