谁有自动拼装库表里的数据为insert~~~~~values~~~~的过程?先给先得分.(是完整的SQL语句,包含表名与数据的,另外,不要给ms sql的,这个我已经有了)
解决方案 »
- 求助!!!
- 通过DBlink调用存储过程的奇怪问题
- 如何设置固定oracle端口?要在防火墙里面设置的
- oracle Commit 后 如何解决延迟问题
- 新手求助report主从显示问题
- 菜鸟请教个imp问题
- 如何用sql语句导出csv文件
- oracle 更新 表数据 报sqlcode=1403
- 这样一个Select语句应如何写?
- windows 下 用mingw和oci怎么连接oracle 11g xe
- 服务器是windows2003,装了Oracle9i,隔一夜早晨来就自动断开了,而且客户端连不上,必须重启服务器主机!这是为什么?
- 如何将毫秒形式的数据库日期字段转换成“YYYY-MM-DD”的形式?
insert tableA (column_name1,column_name2,...)
select column_name1,column_name2,... from tableB
好麻烦哟,做了个比较糙的方法,你试试把 一下存成一个sql脚本,把其中的路径换成自己的
set verify off
set head off
set linesize 10000
set feedback off
set serverout on
set wrap off
set colsep ','
variable c refcursor;
variable sqlStr varchar2(4000);
variable sqlStr2 varchar2(4000);
variable tabname varchar2(100);
declare
type t_test1 is table of varchar2(60);
v_columnname varchar2(4000);
v_str1 varchar2(4000):=' (';
v_str2 varchar2(4000) := ' ';
v_name varchar2(4000);
begin
v_name := '&tablename';
:tabname := v_name;
open :c for select column_name from user_tab_cols where upper(table_name) = upper(v_name) and hidden_column='NO';
loop
fetch :c into v_columnname;
exit when :c%notfound;
v_str1 := v_str1 || v_columnname || ',';
v_str2 := v_str2 || '''''''||'||v_columnname|| '||'''''','; --dbms_output.put_line('column : '||v_columnname);
end loop;v_str2 := '''insert into ' || v_name || substr(v_str1, 1, length(v_str1)-1)||')' || ' values(' || substr(v_str2, 1, length(v_str2)-1) || ');''';
:sqlStr := 'select '||v_str2||' sql from '||v_name||';';
end;
/
spool 'E:\David\workspace\oracle\script\plsqlblock3-1.sql';
select 'set verify off;' from dual;
select 'set head off;' from dual;
select 'set linesize 10000;' from dual;
select 'set feedback off;' from dual;
select 'set wrap off;' from dual;
select 'set serverout on;' from dual;
--select 'set colsep '','';' from dual;
select 'spool ''E:\David\workspace\oracle\script\plsqlblock3.sql.log'';' from dual;
print :sqlStr;
select 'spool off;' from dual;
spool off;
@E:\David\workspace\oracle\script\plsqlblock3-1.sql;
exit;把这里的路径E:\David\workspace\oracle\script换成自己的路径,把这个脚本存一个文件,比如为c:/abc.sql通过sqlplus "user/name" @c:/abc.sql执行这个sql脚本。中途会提示你输入tablename: 也就是你要转换的表的名字。最后打开E:\David\workspace\oracle\script\plsqlblock3.sql.log文件,里面就是insert into的脚本不过时间日期格式会有差异。你试试看先,看是不是你需要的结果。以上主要是用spool的知识。
set head off
set linesize 10000
set feedback off
set serverout on
set wrap off
set colsep ','
variable c refcursor;
variable sqlStr varchar2(4000);
variable sqlStr2 varchar2(4000);
variable tabname varchar2(100);
declare
type t_test1 is table of varchar2(60);
v_columnname varchar2(4000);
v_str1 varchar2(4000):=' (';
v_str2 varchar2(4000) := ' ';
v_name varchar2(4000);
begin
v_name := '&tablename';
:tabname := v_name;
open :c for select column_name from user_tab_cols where upper(table_name) = upper(v_name) and hidden_column='NO';
loop
fetch :c into v_columnname;
exit when :c%notfound;
v_str1 := v_str1 || v_columnname || ',';
v_str2 := v_str2 || '''''''||'||v_columnname|| '||'''''','; --dbms_output.put_line('column : '||v_columnname); end loop; v_str2 := '''insert into ' || v_name || substr(v_str1, 1, length(v_str1)-1)||')' || ' values(' || substr(v_str2, 1, length(v_str2)-1) || ');''';
:sqlStr := 'select '||v_str2||' sql from '||v_name||';';
end;
/
spool 'E:\David\workspace\oracle\script\plsqlblock3-1.sql';
select 'set verify off;' from dual;
select 'set head off;' from dual;
select 'set linesize 10000;' from dual;
select 'set feedback off;' from dual;
select 'set wrap off;' from dual;
select 'set serverout on;' from dual;
--select 'set colsep '','';' from dual;
select 'spool ''E:\David\workspace\oracle\script\plsqlblock3.sql.log'';' from dual;
print :sqlStr;
select 'spool off;' from dual;
spool off;
@E:\David\workspace\oracle\script\plsqlblock3-1.sql;
exit; 把这里的路径E:\David\workspace\oracle\script换成自己的路径,把这个脚本存一个文件,比如为c:/abc.sql 通过sqlplus "user/name" @c:/abc.sql执行这个sql脚本。 中途会提示你输入tablename: 也就是你要转换的表的名字。 最后打开E:\David\workspace\oracle\script\plsqlblock3.sql.log文件,里面就是insert into的脚本 不过时间日期格式会有差异。 你试试看先,看是不是你需要的结果。 以上主要是用spool的知识。
这个还可以,试试看看,