现在有个活就是 更换数据库中某个表或者某几个表的内容,做法应该是:
首先清除指定表的内容,然后再重新将新表的内容导入进去,达到更换某几张表内容的目的,如何写命令?因为我要作一个批处理, Oracle高人们指点!!!!!!谢谢了!
首先清除指定表的内容,然后再重新将新表的内容导入进去,达到更换某几张表内容的目的,如何写命令?因为我要作一个批处理, Oracle高人们指点!!!!!!谢谢了!
解决方案 »
- database not mounted
- oracle 调用java rmi 求高手赐教
- 请问为什么返回01427错误
- oracle 创建临时表 出现符号 CREATE 在需要下列 begin function package
- OracleManagementServer服务不能启动???
- 小弟想用ASP.NET+Oracle做信息管理系统的开发,该看些什么样的关于Oracle的书?
- 高分求 《复合试的查询》,请帮忙!
- oracle 中的位操作函数是什么?
- oracle表的字段不能修改,在线加分
- 如何能动态的获取视图的字段名、数据,需要将数据拼接成JSON格式
- 一个比较复杂的取值问题[在线给分]
- 求一sql
但你怎么导入数据呀,既然是批处理,那就是说数据以文件的形式保存在外部?
--已知问题:她不区分数据类型,插入时由oracle来自动转换
--更好的工具:pl/sql developercreate or replace procedure dump_tab_to_sql
( p_tname in varchar2,
p_nls_date_format varchar2 := 'yyyy-mm-dd hh24:mi:ss'
)
authid current_user /* <<<== if you want... runs as "invoker" and runs with ROLES */
is
l_theCursor integer default dbms_sql.open_cursor;
l_columnValue varchar2(4000);
l_status integer;
l_query varchar2(1000)
default 'select * from ' || p_tname;
l_colCnt number := 0;
l_separator varchar2(2);
l_descTbl dbms_sql.desc_tab;
l_text long;
begin
execute immediate
'alter session set nls_date_format=''' || p_nls_date_format || '''';
dbms_output.put_line( 'alter session set nls_date_format=''' || p_nls_date_format || ''';' );
dbms_output.put_line( 'alter session set cursor_sharing=force;' ); dbms_sql.parse( l_theCursor, l_query, dbms_sql.native );
dbms_sql.describe_columns( l_theCursor, l_colCnt, l_descTbl ); l_text := 'insert into ' || p_tname || ' (';
for i in 1 .. l_colCnt
loop
l_text := l_text || l_separator || '"' || l_descTbl(i).col_name || '"';
dbms_sql.define_column( l_theCursor, i, l_columnValue, 4000 );
l_separator := ', ';
end loop;
l_text := l_text || ') values ('; l_status := dbms_sql.execute(l_theCursor); while ( dbms_sql.fetch_rows(l_theCursor) > 0 )
loop
l_separator := '';
dbms_output.put( l_text );
for i in 1 .. l_colCnt
loop
dbms_sql.column_value( l_theCursor, i, l_columnValue );
if ( l_columnValue is not null )
then
dbms_output.put( l_separator || '''' || replace(l_columnValue, '''', ''''''
) || '''' );
else
dbms_output.put( l_separator || 'NULL' );
end if;
l_separator := ', ';
end loop;
dbms_output.put_line( ');' );
end loop;
dbms_sql.close_cursor(l_theCursor);
dbms_output.put_line('commit;');
exception
when others then
raise;
end;
/
---------------------
truncate table a;
truncate table b;
@@a.sql;
commit;
@@b.sql;
commit;再写一run.bat
----------------
sqlplus 用户名/密码@xxxx @run.sql用户只需点run.bat即可
conn yourUser/pw
truncate table yourtable1;
truncate table yourtable2;
--其它表的truncate
exitimp user/pw file=xxx.dmp fromuser=user1 touser=user2