<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表结构数据的更多相关文章

  1. 用plsql 导入导出oracle表结构数据

    一.导出 (1)导出数据 进入pl/sql,"工具"---->"Export Tables...",然后在弹出的对话框中选择要导出的表,最后点击" ...

  2. python用jdbc读取oracle表和列的信息,生成java代码

    这个项目的地址 传送门 第一个python3项目,对python 还是学习中,请大佬轻喷,欢迎指点 import jaydebeapi from .database import Database d ...

  3. 利用ADO让普通人用excel读取oracle数据库表的通用办法

    Ref:http://blog.csdn.net/iamlaosong/article/details/8465177 Excel通过ADO方式连接到Oracle并操作Oracle给那些编程能力不强的 ...

  4. Oracle DBA的神器: PRM恢复工具,可脱离Oracle软件运行,直接读取Oracle数据文件中的数据

    Oracle DBA的神器: PRM恢复工具,可脱离Oracle软件运行,直接读取Oracle数据文件中的数据 PRM 全称为ParnassusData Recovery Manager ,由 诗檀软 ...

  5. Oracle 表连接方式分析 .

    一 引言 数据仓库技术是目前已知的比较成熟和被广泛采用的解决方案,用于整和电信运营企业内部所有分散的原始业务数据,并通过便捷有效的数据访问手段,可以支持企业内部不同部门,不同需求,不同层次的用户随时获 ...

  6. 读取数据表中第m条到第n条的数据,SQL语句怎么写?

    原文:读取数据表中第m条到第n条的数据,SQL语句怎么写? 对于MySQL或者Oracle来说,如果实现从Table 表中取出第 m 条到第 n 条的记录操作,我们需要TOP函数(不是所有的数据库都支 ...

  7. Oracle表空间详解

    Oracle表空间详解 1.表空间的分类 Oracle数据库把表空间分为两类:系统表空间和非系统表空间. 1.1系统表空间指的是数据库系统创建时需要的表空间,这些表空间在数据库创建时自动创建,是每个数 ...

  8. Python+Pandas 读取Oracle数据库

    Python+Pandas 读取Oracle数据库 import pandas as pd from sqlalchemy import create_engine import cx_Oracle ...

  9. Oracle树形结构数据-相关知识总结

    Oracle树形结构数据--基本知识 1.数据组成 2.基本查询 2.1.查询某节点及该节点下的所有子孙节点 SELECT   *      FROM QIANCODE.TREE_TABLE_BASI ...

随机推荐

  1. Ibatis配置存储过程xml文件案例

    -- <parameterMaps> <!--注意:parameterMap中的参数个数和顺序要和ProcGetPersonByName存储过程中的一致--> <para ...

  2. WebService和AngularJS实现模糊过滤查询

    WebService和AngularJS实现模糊过滤查询   [概要] 网上看到一个不错的帖子,用WebService获取json,然后在前端使用AngularJs进行过滤搜索,看完文章后,按自己的想 ...

  3. 学习selenium python版最初的一个小想法

    这个还是我在刚开始学习selenium的时候做的,自己觉得有点意思,在接下来我会基于目前我对于selenium的一些深入研究,写下我对selenium的理解以及UIAutomation的一些理解,以此 ...

  4. MySQL中char和varchar有啥区别?优缺点是啥?

    在mysql教程中char与varchar的区别呢,都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定的长度,而varchar属于可变长的字符类型. char与varchar的区别 c ...

  5. python读写protobuf

    0.     前期准备 官方protobuf定义 https://code.google.com/p/protobuf/   python使用指南 https://developers.google. ...

  6. socket网络编程快速上手(二)——细节问题(4)

    5.慢系统调用及EINTR 还记得前面readn和writen函数么?里面有个EINTR,现在就来谈谈这个,这个很重要. Linux世界有个叫信号的东西,感觉他就像一位隐士,很少遇到他,而他又无处不在 ...

  7. EntityFramework5提供的迁移工具

    目录 背景之前是如何做的?EntityFramework5提供了更好的选择备注 背景返回目录 刚毕业做项目的时候,没有用“迁移”这个概念,系统发布和更新的过程让人非常痛苦,在学习 Ruby On Ra ...

  8. iOS单元测试

    参考下面的链接 ,写的还不错 http://gaohaijun.blog.163.com/blog/static/176698271201151052325749/

  9. picker控件详解与使用,(实现省市的二级联动)

    picker控件详解与使用,(实现省市的二级联动) 第一步:新建一个单视图(single view)的工程, 命名为pickerTest,不要勾选下面两个选项,第一个是新版本里面的,第二个是单元测试, ...

  10. EasyUI项目驱动学习

    下面以一个项目简单介绍easyui的使用,主要包括以下组件 布局面板 - layout 可伸缩面板 - accordion 选项卡 - tabs 控制面板 - panel 窗口 - window 对话 ...