读取Oracle表结构数据
<html lang="zh-cn">
<head>
<meta name="generator"
content="Oracle Test" />
<meta charset="utf-8" />
<meta name="robots" content="all" />
<meta name="author" content="w3school.com.cn" />
<link rel="stylesheet" type="text/css" href="/c5.css" />
<style type="text/css">
.title {
font-weight:bold;
}
td {
width:120px;
padding-left:10px;
}
table {
border: 0.5px solid #778899;
border-collapse:collapse;
border-spacing:0;
padding:0;
}
.db_info {
color:Navy;
background-color: Lavender;
width:660px;
font-weight:bold;
padding:10px 10px 10px 20px;
line-height:25px;
text-align:left;
border-radius:15px;
-moz-border-radius:15px; /* Old Firefox */
}
</style>
<title>Oracle数据库表结构</title>
</head>
<body>
<center>
<?php
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 数据库连接配置信息
$ora_host = "";
$ora_port="";
$ora_sid = "";
$ora_username = "";
$ora_password = "";
$charset = "UTF8"; ### zhs16gbk ###
// 连接字符串
$ora_connstr = "(description=(address=(protocol=tcp)
(host=".$ora_host.")(port=".$ora_port."))
(connect_data=(service_name=".$ora_sid.")))";
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 测试连接
$conn = oci_connect($ora_username, $ora_password, $ora_connstr,'UTF8');
if (!$conn) {
echo "连接Oracle失败!<br/>";
$e = oci_error();
print htmlentities($e['message']);
exit;
}else{
echo "连接Oracle成功!<br/>";
}
echo "用户:".$ora_username." 服务器:".$ora_host." SID:".$ora_sid."<br/><br/>"; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 查询数据库版本
$sql_version='select banner from sys.v_$version';
$stid_sql_version = oci_parse($conn, $sql_version); // 配置 Oracle 语句预备执行
if (!$stid_sql_version) {
$e = oci_error($conn);
print htmlentities($e['message']);
exit;
}
$r_sql_version = oci_execute($stid_sql_version, OCI_DEFAULT); // 执行SQL。OCI_DEFAULT表示不要自动commit
if(!$r_sql_version) {
$e = oci_error($stid_sql_version);
echo htmlentities($e['message']);
exit;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 打印执行结果
print "<div class=\"db_info\">";
while($row = oci_fetch_row($stid_sql_version)) {
$ver_info=$row[0];
echo "<cite>".$ver_info."</cite><br/>";
}
print "</div><br/>";
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 查询用户下的表数量
$sql_showtables='select table_name from user_tables';
$stid = oci_parse($conn, $sql_showtables); // 配置 Oracle 语句预备执行
if (!$stid) {
$e = oci_error($conn);
print htmlentities($e['message']);
exit;
}
$r = oci_execute($stid, OCI_DEFAULT); // 执行SQL。OCI_DEFAULT表示不要自动commit
if(!$r) {
$e = oci_error($stid);
echo htmlentities($e['message']);
exit;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 打印执行结果
while($row = oci_fetch_row($stid)) {
$table_name=$row[0];
echo "<strong>数据表名:".$table_name."</strong>";
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 查询表名注释
$tab_comments='select b.comments as 注释 from USER_TAB_COMMENTS b where b.TABLE_NAME=upper(\''.$table_name.'\')';
$stid_tab_comments = oci_parse($conn, $tab_comments); // 配置SQL语句,准备执行
if (!$tab_comments) {
$e = oci_error($conn);
print htmlentities($e['message']);
exit;
}
$r_tab_comments = oci_execute($stid_tab_comments, OCI_DEFAULT); // 执行SQL。OCI_DEFAULT表示不要自动commit
if(!$r_tab_comments) {
$e = oci_error($stid_tab_comments);
echo htmlentities($e['message']);
exit;
}
while($row_tab_comments = oci_fetch_row($stid_tab_comments)) {
print" <strong>备注:$row_tab_comments[0]</strong>";
print"<br/>";
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 查询TABLE META
$table_meta='select a.column_name,a.data_type,a.data_length,a.NULLABLE
from
user_tab_columns a
where a.TABLE_NAME=upper(\''.$table_name.'\')';
$stid_table_meta = oci_parse($conn, $table_meta); // 配置SQL语句,准备执行
if (!$stid_table_meta) {
$e = oci_error($conn);
print htmlentities($e['message']);
exit;
}
$r_table_meta = oci_execute($stid_table_meta, OCI_DEFAULT); // 执行SQL。OCI_DEFAULT表示不要自动commit
if(!$r_table_meta) {
$e = oci_error($stid_table_meta);
echo htmlentities($e['message']);
exit;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 打印数据表结构表格
print '<table border="1">';
print '<tr bgcolor="#6495ED" class="title"><td>字段名</td><td><p>数据类型</td><td>数据长度</td><td>是否可为空</td><td>注释</td></tr>';
while($row_table_meta = oci_fetch_row($stid_table_meta)) {
//&& $row_col_comments = oci_fetch_row($stid_col_comments
print"<tr bgcolor=\"#F0FFFF\"><td>$row_table_meta[0]</td>";
print"<td>$row_table_meta[1]</td>";
print"<td>$row_table_meta[2]</td>";
print"<td>$row_table_meta[3]</td>";
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 查询对应的字段注释
$col_comments='select b.comments as 注释 from USER_COL_COMMENTS b where b.column_name=upper(\''.$row_table_meta[0].'\') and b.table_name=upper(\''.$table_name.'\')';
$stid_col_comments = oci_parse($conn, $col_comments); // 配置SQL语句,准备执行
if (!$col_comments) {
$e = oci_error($conn);
print htmlentities($e['message']);
exit;
}
$r_col_comments = oci_execute($stid_col_comments, OCI_DEFAULT); // 执行SQL。OCI_DEFAULT表示不要自动commit
if(!$r_col_comments) {
$e = oci_error($stid_col_comments);
echo htmlentities($e['message']);
exit;
}
while($row_col_comments = oci_fetch_row($stid_col_comments)) {
//print"<td>$row_col_comments[0]</td>";
print"<td>$row_col_comments[0]</td>";
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//print"<td> </td>";
print"</tr>";
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
print"</table></br>";
}
// 关闭连接
oci_close($conn);
?>
</center>
</body>
</html>
读取Oracle表结构数据的更多相关文章
- 用plsql 导入导出oracle表结构数据
一.导出 (1)导出数据 进入pl/sql,"工具"---->"Export Tables...",然后在弹出的对话框中选择要导出的表,最后点击" ...
- python用jdbc读取oracle表和列的信息,生成java代码
这个项目的地址 传送门 第一个python3项目,对python 还是学习中,请大佬轻喷,欢迎指点 import jaydebeapi from .database import Database d ...
- 利用ADO让普通人用excel读取oracle数据库表的通用办法
Ref:http://blog.csdn.net/iamlaosong/article/details/8465177 Excel通过ADO方式连接到Oracle并操作Oracle给那些编程能力不强的 ...
- Oracle DBA的神器: PRM恢复工具,可脱离Oracle软件运行,直接读取Oracle数据文件中的数据
Oracle DBA的神器: PRM恢复工具,可脱离Oracle软件运行,直接读取Oracle数据文件中的数据 PRM 全称为ParnassusData Recovery Manager ,由 诗檀软 ...
- Oracle 表连接方式分析 .
一 引言 数据仓库技术是目前已知的比较成熟和被广泛采用的解决方案,用于整和电信运营企业内部所有分散的原始业务数据,并通过便捷有效的数据访问手段,可以支持企业内部不同部门,不同需求,不同层次的用户随时获 ...
- 读取数据表中第m条到第n条的数据,SQL语句怎么写?
原文:读取数据表中第m条到第n条的数据,SQL语句怎么写? 对于MySQL或者Oracle来说,如果实现从Table 表中取出第 m 条到第 n 条的记录操作,我们需要TOP函数(不是所有的数据库都支 ...
- Oracle表空间详解
Oracle表空间详解 1.表空间的分类 Oracle数据库把表空间分为两类:系统表空间和非系统表空间. 1.1系统表空间指的是数据库系统创建时需要的表空间,这些表空间在数据库创建时自动创建,是每个数 ...
- Python+Pandas 读取Oracle数据库
Python+Pandas 读取Oracle数据库 import pandas as pd from sqlalchemy import create_engine import cx_Oracle ...
- Oracle树形结构数据-相关知识总结
Oracle树形结构数据--基本知识 1.数据组成 2.基本查询 2.1.查询某节点及该节点下的所有子孙节点 SELECT * FROM QIANCODE.TREE_TABLE_BASI ...
随机推荐
- ps教程--折纸效果
原文:http://www.fevte.com/tutorial-16947-1.html
- 带你走近AngularJS 之创建自定义指令
带你走近AngularJS 之创建自定义指令 为什么使用AngularJS 指令? 使用过 AngularJS 的朋友应该最感兴趣的是它的指令.现今市场上的前端框架也只有AngularJS 拥有自定义 ...
- 捣鼓一个Ajax请求管理器
随着前端技术的不断发展,现在做的项目里很多页面里都会有大量的ajax请求,随之而来就有了一些问题: 1.没必要的ajax请求怎么处理? 2.ajax链式调用怎么维护? ajax链式调用最原始的写法: ...
- 完美的拥抱GitHub
Visual Studio 2012完美的拥抱GitHub 前言 一直以来都想使用Git来管理自己平时积累的小代码,就是除了工作之外的代码了.有时候自己搞个小代码,在公司写了,就要通过U盘或者网盘 ...
- WCF入门教程(图文)VS2012
WCF入门教程(图文)VS2012 上一遍到现在已经有一段时间了,先向关注本文的各位“挨踢”同仁们道歉了.小生自认为一个ITer如果想要做的更好,就需要将自己的所学.所用积极分享出来,接收大家的指导和 ...
- [置顶] 纯手工打造漂亮的垂直时间轴,使用最简单的HTML+CSS+JQUERY完成100个版本更新记录的华丽转身!
前言 FineUI控件库发展至今已经有 5 个年头,目前论坛注册的QQ会员 5000 多人,捐赠用户 500 多人(捐赠用户转化率达到10%以上,在国内开源领域相信这是一个梦幻数字!也足以证明Fine ...
- System.Net.Http 简介
System.Net.Http 简介 System.Net.Http 是微软推出的最新的 HTTP 应用程序的编程接口, 微软称之为“现代化的 HTTP 编程接口”, 主要提供如下内容: 1. 用户通 ...
- window wamp下xhprof的安装使用,Graphviz配置
在新的工作安排下来前赶紧把手上工作优化下,本来是靠xdebug+grindview来的,不过还是麻烦,就换上这个轻量级的性能测试了.网上搜的大多都是lamp环境下的,wamp下的倒是不多,而且不好用, ...
- [转]unload dynamic library needs two dlclose() calls?
src: http://stackoverflow.com/questions/8793099/unload-dynamic-library-needs-two-dlclose-calls Quest ...
- WinDBG中加载SOS和CLR
WinDBG中加载SOS和CLR 最近产品环境出现了部分服务器当机情况,虽然重启之后问题就不出现了.但本着彻底解决问题的态度,想要找到root cause.多次尝试Visual Studio失败(可能 ...