- 浏览: 807043 次
- 性别:
- 来自: 株洲->深圳
文章分类
- 全部博客 (283)
- JAVA (54)
- 数据库 (25)
- Linux (22)
- Spring (9)
- Hibernate (7)
- mybatis (1)
- struts (10)
- javascript (22)
- Web (11)
- 异常 (30)
- 工具 (21)
- pay (9)
- 软件相关 (7)
- 其它 (28)
- python (1)
- 缓存 (9)
- 面试题 (2)
- 代码规范 (14)
- 网络编程 (1)
- 架构设计 (1)
- 程序测试 (3)
- 移动 (1)
- 安全 (2)
- 服务器 (4)
- 程序员 (1)
- php (4)
- 非技术 (7)
- web容器 (3)
- 竞彩篮球 (1)
- nginx (5)
- 加密 (2)
- jquery (2)
- 原理 (2)
- 项目管理 (1)
- www..betradar.com (0)
- www.betradar.com (1)
- 爬虫 (1)
最新评论
-
July01:
有一款web 打印控件StratoIO,浏览器和系统的兼容性都 ...
WEB免费打印控件推荐(4款) -
lihaimian:
你好,有个问题咨询一个,为何我在java中,无法使用与运算符, ...
位运算、异或的实际应用 -
小黄牛:
很好谢谢分享!推荐几篇spring boot基础入门文章:ht ...
Spring Boot 快速入门 (官方quick start) -
littlesheep:
我按照你的方法从新生成了密钥可是还是报者个错误...
狗日的支付宝 -
di1984HIT:
学习了~~~
javassist:增强型的java反射工具,获取方法参数名
create or replace procedure print_insert(v_tname varchar2, v_cbatch number default 0) /* v_tname 要输出sql的表名 v_cbatch 输出commit间隔 */ as /* 声明动态游标变量 */ type cur_alldata is ref cursor; l_alldata cur_alldata; /* 将单行数据写入v_row*/ v_sql varchar2(3999); v_row varchar2(3999); /* 函数的前向声明 */ function formatfield(v_tname varchar2, v_cname varchar2, v_colno number) return varchar2; /* 格式化数据输出 */ function formatdata(v_tname varchar2, v_row varchar2) return varchar2 as v_ldata varchar2(32765); v_rdata varchar2(32765); v_cname varchar2(3999); v_instr number(10); v_count number(6); begin v_instr := instr(v_row, '(', 1, 2); --INSTR(源字符串, 目标字符串, 起始位置, 匹配序号) v_ldata := substr(v_row, 1, v_instr); v_rdata := substr(v_row, v_instr + 1); v_instr := instr(v_rdata, ')', -1, 1); v_rdata := substr(v_rdata, 1, v_instr - 1); v_count := 0; loop v_instr := instr(v_rdata, ','); exit when v_instr = 0; v_cname := substr(v_rdata, 1, v_instr - 1); v_rdata := substr(v_rdata, v_instr + 1); v_count := v_count + 1; /* 格式化不同的数据类型 */ v_cname := formatfield(v_tname, v_cname, v_count); /* 将处理后的字段值加入v_ldata */ if v_count = 1 then v_ldata := v_ldata || v_cname; else v_ldata := v_ldata || ',' || v_cname; end if; end loop; /* 添加最后一个字段的值 */ if v_count = 1 then v_ldata := v_ldata || formatfield(v_tname, v_rdata, v_count + 1) || ');'; else v_ldata := v_ldata || ',' || formatfield(v_tname, v_rdata, v_count + 1) || ');'; end if; dbms_output.put_line(v_ldata); return v_ldata; end; /* 针对不同的数据类型进行处理 */ function formatfield(v_tname varchar2, v_cname varchar2, v_colno number) return varchar2 as v_name varchar2(3999); v_type varchar2(99); begin select coltype into v_type from col where tname = upper(v_tname) and colno = v_colno; --判断数据类型 if v_type = 'DATE' then v_name := 'to_date(' || '''' || v_cname || '''' || ',' || '''' || 'yyyy-mm-dd hh24:mi:ss' || '''' || ')'; elsif v_type = 'VARCHAR2' then v_name := '''' || v_cname || ''''; elsif v_type = 'CHAR' then v_name := '''' || v_cname || ''''; else v_name := v_cname; end if; return v_name; end; /* 求输入表的字段列表 */ function getfields(v_tname varchar2) return varchar2 as v_fields varchar2(3999); v_fieldName varchar2(3999); begin for cur_fname in (select cname, coltype from col where tname = upper(v_tname) order by colno) loop if v_fields is null then v_fields := 'nvl(' || cur_fname.cname || ',' || '''' || '0' || '''' || ')'; else v_fields := v_fields || '||'',''||' || 'nvl(' || cur_fname.cname || ',' || '''' || '0' || '''' || ')'; end if; if v_fieldName is null then v_fieldName := cur_fname.cname; else v_fieldName := v_fieldName || ',' || cur_fname.cname; end if; end loop; v_fields := 'select ' || '''' || 'insert into ' || v_tname || ' (' || v_fieldName || ') values(' || '''' || '||' || v_fields || '||' || '''' || ')' || '''' || ' from ' || v_tname; return v_fields; end; begin DBMS_OUTPUT.ENABLE(buffer_size => null); --解决PLSQL Developer 出现ORU-10027: buffer overflow, limit of 10000 bytes execute immediate 'alter session set nls_date_format=' || '''' || 'yyyy-mm-dd hh24:mi:ss' || ''''; dbms_output.put_line(' *** 表SQL输出 *** '); v_sql := getfields(v_tname); --dbms_output.put_line(v_sql); open l_alldata for v_sql; loop fetch l_alldata into v_row; exit when l_alldata%notfound; --dbms_output.put_line(v_row); dbms_output.put_line(formatdata(v_tname, v_row)); if mod(l_alldata%rowcount, v_cbatch) = 0 then dbms_output.put_line('commit;'); end if; end loop; close l_alldata; end;
原博客:http://blog.itpub.net/xzh2000
对原作者的代码进行了相应的修改。
在命令行中执行:
set serveroutput on; --设置服务器输出 exec print_insert('表名',100);
--获取表的相关字段属性(相当于java反射获取对象属性)
select * from col where tname = upper('表名');
评论
2 楼
wenjinglian
2013-04-12
sangshuye 写道
哥们,我用的怎么不好使啊?
可能是版本问题,我当时是oracle10g
1 楼
sangshuye
2013-04-07
哥们,我用的怎么不好使啊?
发表评论
-
MySQL: InnoDB 还是 MyISAM?
2013-10-15 10:08 1330MyISAM存储引擎 ... -
linux服务相关操作
2013-08-10 10:12 949============================== ... -
mysql用户创建、授权、删除、修改密码
2013-08-10 10:08 12801.新建用户。 //登录MYSQL @>mysql ... -
Data truncation: Incorrect datetime value: '' for column 'createTime' at row
2013-03-22 17:11 21866mysql SQL Error: 0, SQLState: ... -
查询数据库中不存在的ID
2012-11-28 12:37 1484假设你数据库有个A表: ID NAME ... -
exist,in,instr
2012-09-21 12:37 0select v.id, v.name, v.st ... -
oracle 中将 多行值合并成一行
2012-07-09 12:42 3013例:field1 field2 A ... -
windows环境mysql5.0升级mysql5.5
2012-04-07 17:46 2344本地升级测试没什么压力。 更神奇的是将老版本的mysql数据 ... -
mysql 简单命令学习
2012-04-07 16:34 1117一、连接MYSQL。格式: mysql -h主机地址 ... -
oracle锁表解除
2012-03-20 18:36 1498--Oracle数据库操作中,我们有时会用到锁表查询以及解锁和 ... -
oracle 时间相减,月份相加减
2012-03-15 11:06 11214oracle 两个时间相减默认的是天数 oracle ... -
oracle 方法通过用户id查询金额
2012-03-14 15:27 1452create or replace function g ... -
mysql常见错误
2011-12-31 12:53 3150常见错误及处理办法 1、[Err] 1064 - Yo ... -
InnoDB与Myisam的六大区别
2011-12-30 10:52 1007本文整理了Mysql 两大常用的存储引擎MyISAM,I ... -
mysql嵌套if演示
2011-12-24 23:06 3651DELIMITER $$ CREATE ... -
MySQL数据类型简介
2011-11-29 00:04 1047名称 长度 ... -
oracle正则使用事例
2011-07-11 16:09 1198--除去字段中的中文 select regexp_re ... -
oracle 游标的高级用法
2011-06-30 00:04 12661.定义带有参数的游标调用带有参数的游标,可以取得不同的查询结 ... -
Oracle to_date
2011-06-29 11:12 1194to_date('2011-04-25 15:15:12 ... -
Oracle function 个人所得税
2011-06-20 18:23 1198起征税3000 create or replace f ...
相关推荐
一个用来把Oracle数据库中的数据转换成INSERT语句的小工具。
一个用来把Oracle数据库中的数据转换成INSERT语句的小工具。
表数据生成insert语句的存储过程;表数据生成insert语句的存储过程;
一个用来把Oracle数据库中的数据转换成INSERT语句的小工具。
windows和unix下通过spool导出oracle的数据,可以精确到表,也可以精确到表的具体数据,导成insert语句或者数据文本都可以
sybase库中导出全部表的oracle、mysql和sybase格式的建表语句
Navicat是一个通用查询分析器,支持MySQL、SQL Server、Oracle、SQLite、PostgreSQL等数据库。更可以将表中数据导出成Insert语句。
此软件用于把数据库里的数据导出为指定数据库类型的insert语句,用于数据备份或迁移到另一个数据库, 大文本和二进制字段被忽略。 当前支持oracle、sybase、mysql和ms sqlServer数据库。 你可以修改参数文件、增加新...
由于sql server2005里没有像oracle那样将数据导出成sql语句(insert into)的功能。所以,写的一个存储过程,该存储过程将提成的表的数据全部生成insert into.....这样的插入语句。以便数据的复制。
沈阳信软计算机有限公司的员工在业余时间开发了这个小工具,实现了SQLServer2005的数据导出,导出的数据是 [表名].sql。 这个文件可以导入到任何数据库里,实现了数据库切换。开发工作在SQLServer2005里比较方便,但...
从 Oracle数据库中导出数据库对象创建和申明的SQL脚本
首先在数据库中创建存储过程和方法,然后调用创建好的存储过程,生成带有与表名及字段相关的insert,update,delete语句,变量与表字段名相同,例如: "insert into temp (col1,col2,col3) values ('"+col1+"','"+col2...
编写这个小工具,是因为平时部署项目的时候,需要导出一些公共的数据(权限、参数设置等),覆盖插入正式环境。 话不多说,直接上代码: import pyodbc import warnings import decimal import winreg import os ...
将带有列名的Excel表格导出为insert into特定表的语句
用表格显示 SELECT 语句的查询结果,可以直接对查询结果进行再操作,如 修改、插入行、删除行、提交(将表格中的数据改变写入相应的数据库表中)、多功能拷贝、导出为 INSERT 语句、单条记录操作、方便的查找及替换...
SqlDbx 是简单易用的数据库设备,SQL... 可以看到库中有多少表、多少存储过程、多少触发器、多少视图、多少函数,可以直接看到每个表的数据行数,可以导出查询结果的insert语句,还可以对比不同库中同一个表的差异等等
SqlDbx 是简单易用的数据库设备,... 可以看到库中有多少表、多少存储过程、多少触发器、多少视图、多少函数,可以直接看到每个表的数据行数,可以导出查询结果的insert语句,还可以对比不同库中同一个表的差异等等。
SqlDbx 是简单易用的数据库设备,... 可以看到库中有多少表、多少存储过程、多少触发器、多少视图、多少函数,可以直接看到每个表的数据行数,可以导出查询结果的insert语句,还可以对比不同库中同一个表的差异等等。
3.4.1 INSERT语句 3.4.2 UPDATE语句 3.4.3 DELETE语句 3.4.4 TRLINCATE语句 3.5 数据控制 3.5.1 GRANT语句 3.5.2 REVOKE语句 3.6 Oracle常用函数 3.6.1 字符类函数 3.6.2 数字类函数 3.6.3 日期...