Oracle :把表里的数据导成insert语句.txt昨天是作废的支票;明天是尚未兑现的期票;
只有今天才是现金,才能随时兑现一切。人总爱欺骗自己,因为那比欺骗别人更容易。把表
里的数据导成insert语句
2003-10 余枫
Internet上还有一种免费的MYSQL数据库很流行。有些时候我们需要把oracle里的数
据导入MYSQL里。
生成insert into 表名 .... 是一种很简单直接的方法。
今年六月份从www.arikaplan/oracle.html看到一个可以生成insert into 表
名 ....语句的
存储过程genins_output。
我按中文习惯的时间格式YYYY-MM-DD HH24:MI:SS改了改,并新写了一个存储过程genins_file.sql。
它可以把小于16383条记录表里的数据导成(insert into 表名 ....)OS下文件。
调用它之前,DBA要看看数据库的初始化参数 UTL_FILE_DIR 是否已经正确地设置:
SQL> show parameters utl_file_dir;
可以看到该参数的当前设置。
如果没有值,必须修改数据库的a文件,将utl_file_dir 指向一个你想用
tcpip协议文件传输过程PL/SQL file I/O 的路径。
重新启动数据库。此参数才生效。
调用它,可以把表里的数据生成(insert into 表名 ....)OS下文件的过程genins_file
方法:
SQL>exec genins_file('emp','/oracle/logs','insert_emp.sql');using namespace std放在哪
|        |                |
表名,可变    |        生成OS下文件名,可变
|
utl_file_dir路径名,不变(我设置的是/oracle/logs)
SQL> exit
可以在OS目录/oracle/logs下看到insert_emp.sql文件。
txt编码转换器在线注意事项: 生成(insert into 表名 ....)OS下文件最多32767行。
因为我一条insert分成两行,所以最多处理16383条记录的表。
在MYSQL数据库里运行insert_emp.sql,就可以方便地把oracle数据转移到MYSQL数据库里
CREATE OR REPLACE PROCEDURE genins_file(
p_table  IN varchar2,
p_output_folder IN VARCHAR2,
mysql语句转oracle
p_output_file  IN VARCHAR2)
IS
--
l_column_list    VARCHAR2(32767);
l_value_list    VARCHAR2(32767);
l_query          VARCHAR2(32767);
l_cursor        NUMBER;
ignore  NUMBER;
l_insertline1    varchar2(32767);
蜂王胎片冻干粉片真假l_insertline2    varchar2(32767);
cmn_file_handle      UTL_FILE.file_type;
-
-
FUNCTION get_cols(p_table VARCHAR2)
RETURN VARCHAR2小程序开发制作社区论坛
IS
l_cols VARCHAR2(32767);
CURSOR l_col_cur(c_table VARCHAR2) IS
SELECT column_name
FROM  user_tab_columns
WHERE  table_name = upper(c_table)
ORDER BY column_id;
BEGIN
l_cols := null;
FOR rec IN l_col_cur(p_table)
LOOP
l_cols := l_cols || lumn_name || ',';
END LOOP;
RETURN substr(l_cols,1,length(l_cols)-1);
END;
--
FUNCTION get_query(p_table IN VARCHAR2)
RETURN VARCHAR2
IS

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。