PHP 针对人大金仓KingbaseES自动生成数据字典

2023-11-28 23:44

本文主要是介绍PHP 针对人大金仓KingbaseES自动生成数据字典,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

针对国产数据库 人大金仓KingbaseES  其实php 连接采用pdo方式

必须:需要去人大数据金仓官方网站 下载对应版本的pdo_kdb 扩展驱动

其连接方法与pgsql 数据库连接方法大致相同    不解释  直接上代码:

<?php
/*** 生成人大金仓数据字典*/
header("Content-type:text/html;charset=utf-8");// 配置数据库
$database = array();
$database['DB_HOST'] = '127.0.0.1';
$database['DB_NAME'] = 'demo';
$database['DB_USER'] = 'demo';
$database['DB_PWD'] = 'demo';
$database['PORT'] = 54321;
try {$conn = new PDO("kdb:host={$database['DB_HOST']};dbname={$database['DB_NAME']};port={$database['PORT']}", $database['DB_USER'], $database['DB_PWD']);$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {die("连接失败: " . $e->getMessage());
}$result = $conn->query("SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'");
$tables = $result->fetchAll(PDO::FETCH_ASSOC);$html = '';$html .= '<table border="1" cellspacing="0" cellpadding="0" align="center">';
$html .= '<tbody><tr><th>序号</th><th>表名</th><th>功能说明</th></tr>';foreach ($tables as $k => $v) {$sort = $k + 1;$tableName = $v['table_name'];// Get table comment$tableComment = $conn->query("SELECT obj_description('public.{$tableName}'::regclass, 'pg_class') AS table_comment")->fetchColumn();$html .= '<tr>';$html .= '<td class="c1">' . $sort . '</td>';$html .= '<td class="c2">' . $tableName . '</td>';$html .= '<td class="c3">' . $tableComment . '</td>';$html .= '</tr>';
}
$html .= '</tbody></table></p>';$html .= "<br /><br /><br />";foreach ($tables as $v) {$tableName = $v['table_name'];$fields = $conn->query("SELECT column_name,data_type,column_default,is_nullable,character_maximum_length, -- Add this line if you want to get the character maximum lengthnumeric_precision, -- Add this line if you want to get the numeric precisionnumeric_scale, -- Add this line if you want to get the numeric scale(SELECT description FROM pg_description WHERE objoid = (SELECT oid FROM pg_class WHERE relname = '{$tableName}' AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'public'))AND objsubid = (SELECT ordinal_position FROM information_schema.columns WHERE table_name = '{$tableName}' AND table_schema = 'public' AND column_name = c.column_name)) AS column_commentFROM information_schema.columns cWHERE table_name = '{$tableName}' AND table_schema = 'public'")->fetchAll(PDO::FETCH_ASSOC);$html .= '<table border="1" cellspacing="0" cellpadding="0" align="center">';$html .= '<caption>表名:' . $tableName . ' ' . '</caption>';$html .= '<tbody><tr><th>字段名</th><th>数据类型</th><th>默认值</th><th>允许非空</th><th>备注</th></tr>';foreach ($fields as $f) {$html .= '<tr>';$html .= '<td class="c1">' . $f['column_name'] . '</td>';$html .= '<td class="c2">' . $f['data_type'] . '</td>';$html .= '<td class="c3">' . $f['column_default'] . '</td>';$html .= '<td class="c4">' . ($f['is_nullable'] == 'YES' ? '是' : '否') . '</td>';$html .= '<td class="c5">' . $f['column_comment'] . '</td>';$html .= '</tr>';}$html .= '</tbody></table></p>';
}echo '<html><meta charset="utf-8"><title>自动生成数据字典</title><style>body,td,th {font-family:"宋体"; font-size:12px;}table,h1,p{width:960px;margin:0px auto;}table{border-collapse:collapse;border:1px solid #CCC;background:#efefef;}table caption{text-align:left; background-color:#fff; line-height:2em; font-size:14px; font-weight:bold; }table th{text-align:left; font-weight:bold;height:26px; line-height:26px; font-size:12px; border:1px solid #CCC;padding-left:5px;}table td{height:20px; font-size:12px; border:1px solid #CCC;background-color:#fff;padding-left:5px;}.c1{ width: 150px;}.c2{ width: 150px;}.c3{ width: 80px;}.c4{ width: 100px;}.c5{ width: 300px;}</style><body>';
echo '<h1 style="text-align:center;">' . $database['DB_NAME'] . '数据字典</h1>';
echo '<p style="text-align:center;margin:20px auto;">生成时间:' . date('Y-m-d H:i:s', time()) . '</p>';
echo $html;
echo '<p style="text-align:left;margin:20px auto;">总共:' . count($tables) . '个数据表</p>';
echo '</body></html>';
?>

这篇关于PHP 针对人大金仓KingbaseES自动生成数据字典的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/430647

相关文章

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左

SpringBoot中4种数据水平分片策略

《SpringBoot中4种数据水平分片策略》数据水平分片作为一种水平扩展策略,通过将数据分散到多个物理节点上,有效解决了存储容量和性能瓶颈问题,下面小编就来和大家分享4种数据分片策略吧... 目录一、前言二、哈希分片2.1 原理2.2 SpringBoot实现2.3 优缺点分析2.4 适用场景三、范围分片

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

浅析如何保证MySQL与Redis数据一致性

《浅析如何保证MySQL与Redis数据一致性》在互联网应用中,MySQL作为持久化存储引擎,Redis作为高性能缓存层,两者的组合能有效提升系统性能,下面我们来看看如何保证两者的数据一致性吧... 目录一、数据不一致性的根源1.1 典型不一致场景1.2 关键矛盾点二、一致性保障策略2.1 基础策略:更新数