#coding=utf-8
#import _mssql
import psycopg2,pymssql
import types
TableSpace='ABS.'
class SyncDataBase():
def __init__(self):
self.pgconn=psycopg2.connect("dbname=absob host=192.168.1.32 user=postgres password=12345")
self.msconn=pymssql.connect(host="192.168.1.20",user="sa",password="sa",database="absOB090615")
def commit(self):
self.pgconn.commit()
def close(self):
self.pgconn.close()
self.msconn.close()
def rollback(self):
self.pgconn.rollback()
def exesyncdb(self):
mscursor=self.msconn.cursor()
sql=("SELECT COUNT(COLUMNNAME) AS CT,TABLENAME FROM "/
"(SELECT A.NAME AS COLUMNNAME,B.NAME AS TABLENAME FROM SYSCOLUMNS A RIGHT JOIN "/
" SYSOBJECTS B ON A.ID=B.ID WHERE B.TYPE='U' AND B.NAME NOT IN ('dtproperties','0626')) A "/
" GROUP BY TABLENAME ")
#print sql
mscursor.execute(sql)
table=mscursor.fetchall()
if(table is None or len(table)<=0):
return
else:
for row in table:
#print row[1]
self.executeTable(row[1],row[0])
print "%s is execute success"%row[1]
def executeTable(self,tablename,count):
#print tablename
sql1="SELECT * FROM %s"%tablename
mscursor=self.msconn.cursor()
mscursor.execute(sql1)
table=mscursor.fetchall()
if(table is None or len(table)<=0):
mscursor.close()
return
lst_result=self.initColumn(table)
#print "column"
mscursor.close()
sql2=self.initPgSql(tablename,count)
pgcursor=self.pgconn.cursor()
pgcursor.executemany(sql2,lst_result)
pgcursor.close()
def initPgSql(self,tablename,count):
columns=[]
for i in range(count):
columns.append("%s")
strs=",".join(columns)
sql="INSERT INTO %s%s VALUES(%s)"%(TableSpace,tablename,strs)
return sql
#-----------------------------
#字段编码和相关格式初始化
#-----------------------------
def initColumn(self,table):
if(table is None or len(table)<=0):
return None
lst_result=[]
for row in table:
i=0
lines=[]
for column in row:
if(column is not None and types.StringType==type(column)):
#lines.append(unicode(column))
try:
lines.append((column.decode('cp936')).encode('utf-8'))
except:
lines.append(column)
else:
lines.append(column)
i+=1
lst_result.append(lines)
return lst_result
#-----------------------
#测试数据表导入结果测试
#----------------------
def exeBulletin(self):
mscursor=self.msconn.cursor()
sql=("SELECT * FROM BBULLETIN")
mscursor.execute(sql)
table=mscursor.fetchall()
if(table is None or len(table)<=0):
mscursor.close()
return
lst_result=initColumn(table)
mscursor.close()
pgcursor=self.pgconn.cursor()
ret=pgcursor.executemany("INSERT INTO "+TableSpace+"BBULLETIN VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)",lst_result)
pgcursor.close()
def getAllTable(self):
mscursor=self.msconn.cursor()
sql=("SELECT NAME FROM sysobjects WHERE TYPE='U' AND NAME NOT IN ('dtproperties','0626')")
mscursor.execute(sql)
table=mscursor.fetchall()
if(table is None or len(table)<=0):
mscursor.close()
return
pgcursor=self.pgconn.cursor()
for row in table:
sqlext=self.createTable(row[0])
print sqlext
if(sqlext is not None):
pgcursor.execute(sqlext)
mscursor.close()
pgcursor.close()
#----------------------
#根据SQL SERVER数据库基本结构创建PostgreSQL数据库表结构
#----------------------
def createTable(self,tablename):
mscursor=self.msconn.cursor()
# sql=("SELECT A.NAME AS COLUMNNAME,C.NAME,A.LENGTH,B.NAME AS TABLENAME "/
# " FROM SYSCOLUMNS A RIGHT JOIN SYSOBJECTS B ON A.ID=B.ID "/
# " LEFT JOIN SYSTYPES C ON C.XTYPE=A.XTYPE "/
# " WHERE B.TYPE='U' AND B.NAME=%s AND B.NAME NOT IN ('dtproperties','BUPLOADCUSTOMER','RFREIGHT')")
sql=("SELECT A.NAME AS COLUMNNAME,C.NAME,A.LENGTH,B.NAME AS TABLENAME,ISNULL(D.PKS,0) AS PKEY,E.CT "/
" FROM SYSCOLUMNS A RIGHT JOIN SYSOBJECTS B ON A.ID=B.ID "/
" LEFT JOIN SYSTYPES C ON C.XTYPE=A.XTYPE LEFT JOIN "/
" (SELECT A.NAME,1 AS PKS FROM SYSCOLUMNS A "/
" JOIN SYSINDEXKEYS B ON A.ID=B.ID AND A.COLID=B.COLID AND A.ID=OBJECT_ID(%s)"/
" JOIN SYSINDEXES C ON A.ID=C.ID AND B.INDID=C.INDID "/
" JOIN SYSOBJECTS D ON C.NAME=D.NAME AND D.XTYPE='PK') D "/
" ON A.NAME =D.NAME "/
" LEFT JOIN (SELECT COUNT(A.COLUMNNAME) AS CT,%s AS TABLENAME FROM "/
" (SELECT A.NAME AS COLUMNNAME,D.NAME AS TABLENAME FROM SYSCOLUMNS A "/
" JOIN SYSINDEXKEYS B ON A.ID=B.ID AND A.COLID=B.COLID AND A.ID=OBJECT_ID(%s) "/
" JOIN SYSINDEXES C ON A.ID=C.ID AND B.INDID=C.INDID "/
" JOIN SYSOBJECTS D ON C.NAME=D.NAME AND D.XTYPE='PK') A GROUP BY A.TABLENAME) E "/
" ON B.NAME=E.TABLENAME "/
" WHERE B.TYPE='U' AND B.NAME=%s AND B.NAME NOT IN ('dtproperties') ")
mscursor.execute(sql,(tablename,tablename,tablename,tablename))
table=mscursor.fetchall()
if(table is None or len(table)<=0):
mscursor.close()
return
csql="CREATE TABLE "+TableSpace+"%s ("%tablename
lst=[]
for row in table:
if(row[1]=="int"):
if(row[4]==1 and len(lst)<=0 and row[5]==1):
lst.append(row[0]+" serial PRIMARY KEY NOT NULL")
elif(row[4]==1 and len(lst)>0 and row[5]==1):
lst.append(","+row[0]+" serial PRIMARY KEY NOT NULL")
elif(row[4]==0 and len(lst)<=0 and row[5]!=0):
lst.append(row[0]+" INT DEFAULT 0")
elif(len(lst)>0):
lst.append(","+row[0]+" INT DEFAULT 0")
else:
lst.append(row[0]+" INT DEFAULT 0")
if(row[1]=="varchar"):
if(len(lst)<=0):
lst.append(row[0]+" varchar("+str(row[2])+")")
else:
lst.append(","+row[0]+" varchar("+str(row[2])+")")
if(row[1]=="text"):
if(len(lst)<=0):
lst.append(row[0]+" text ")
else:
lst.append(","+row[0]+" text ")
if(row[1]=="datetime"):
if(len(lst)<=0):
lst.append(row[0]+" timestamp without time zone NULL ")
else:
lst.append(","+row[0]+" timestamp without time zone NULL ")
if(row[1]=="numeric" or row[1]=="money" or row[1]=="float" or row[1]=="decimal"):
if(len(lst)<=0):
lst.append(row[0]+" decimal(18,2) DEFAULT 0.00 ")
else:
lst.append(","+row[0]+" decimal(18,2) DEFAULT 0.00 ")
if(row[1]=="bit"):
if(len(lst)<=0):
lst.append(row[0]+" boolean DEFAULT FALSE ")
else:
lst.append(","+row[0]+" boolean DEFAULT FALSE ")
if(row[1]=="tinyint"):
if(len(lst)<=0):
lst.append(row[0]+" smallint DEFAULT 0 ")
else:
lst.append(","+row[0]+" smallint DEFAULT 0 ")
if(row[1]=="char"):
if(len(lst)<=0):
lst.append(row[0]+" char("+str(row[2])+")")
else:
lst.append(","+row[0]+" char("+str(row[2])+")")
lst.append(");")
mscursor.close()
return csql+" ".join(lst)
if __name__=="__main__":
sdb=SyncDataBase()
try:
#print sdb.initPgSql("aaa",10)
#sdb.getAllTable()
sdb.exesyncdb()
except Exception,e:
print e
sdb.rollback()
else:
sdb.commit()
sdb.close()
print "ok........"
相关推荐
SQL内嵌Python/R:数据库内计算的工程实践指南
SQL内嵌Python/R是一种将机器学习与统计分析能力直接下沉至数据库执行层的技术范式,其核心原理是利用数据库原生扩展(如PostgreSQL的plpython3u)实现解释器级集成,而非通过网络API或外部进程桥接。该技术显著提升实时决策效率、保障事务一致性、消除跨系统调度开销,具备低延迟、强安全、易审计等工程价值。典型应用场景包括实时数据清洗、SQL层轻量预测、医保反欺诈规则引擎、政务风控模型在线服务等。本文聚焦生产级落地,覆盖嵌入式执行选型、安全函数编写、权限沙箱配置及R兼容方案,特别强调Pytho
python与sql server处理表_Python sql server和postgresql的表结构转换详解
#coding=utf-8#import _mssqlimport psycopg2,pymssqlimport typesTableSpace='ABS.'class SyncDataBase():def __init__(self):self.pgconn=psycopg2.connect("dbname=absob host=192.168.1.32 user=postgres passwo...
PostgreSQL原生向量搜索:pgvector实战指南与性能调优
向量搜索是支撑RAG、语义推荐、智能客服等AI应用的核心能力,其本质是将非结构化语义信息转化为可计算的高维向量,并基于余弦相似度、L2距离等数学原理实现高效近似最近邻检索。技术价值在于打破结构化与非结构化数据的壁垒,实现低延迟、强一致、免运维的混合查询。典型应用场景包括PostgreSQL中直接增强商品搜索、用户评论情感聚类、文档语义召回等。pgvector作为深度嵌入PostgreSQL的开源扩展,让向量能力成为数据库一等公民,无需双写、不新增组件,真正实现‘用SQL做语义搜索’。
python与sql server_Python做sql server和mysql之间的数据传输
H**Online Syn**avigator倒闭了,王八蛋老板XX沉迷于吃鸡,还有2000+的BUG没有修复,就带着他的小姨子跑路了,我们码农没办法,只能用python来自己开发一个数据同步程序应急。什么诡异的第三方库都不要,统统可以 pip,只要你用python 3.x,就可以很快搞出这个同步程序。骂完,开工!开发机环境:python 3.6.xwindows 10生产环境:CentOS 7....
Python-一个PostgreSQL数据库迁移工具
一个PostgreSQL数据库迁移工具
Profinet从站开发初体验:用p-net开源库和树莓派快速搭建一个IO设备模拟器
本文详细介绍了如何使用p-net开源库和树莓派快速搭建Profinet从站IO设备模拟器。从开发环境准备、p-net源码编译到设备模拟器功能实现,提供了全流程实战指南,帮助开发者快速掌握工业通信协议开发技巧,适用于工业自动化领域的设备互联测试与验证。
psycopg2 如何 查看所有库,表,表结构,表索引
查看所有数据库 r1=qry.query(‘select * from pg_database’) print() for _ in r1[:2]: print(_) 查看所有的表结构 sql= “”" SELECT distinct “table_name” FROM INFORMATION_SCHEMA.COLUMNS WHERE “table_schema” = ‘public’ ORDER BY table_name “”" r1=qry.query(sql) print() for _ in r1
Linux磁盘扩容实战:用parted命令无损扩展/data分区(附常见报错解决方案)
本文详细介绍了在Linux生产环境中使用parted命令对已挂载的/data分区进行在线磁盘扩容的完整实战流程。通过风险评估、状态检查、parted工具深度解析及实战演练,指导用户安全完成动态扩容,并提供了常见报错如'Partition is being used'、MBR 2TB限制等的解决方案,确保业务不中断、数据不丢失。
PostgreSQL 与 MSSQL(SQL Server) 之间 数据相互迁移、导入、导出测试 ...
标签 PostgreSQL , ms sql , SQL Server 背景 测试表结构 create table test (id int, info text); 从 PostgreSQL 导入 MSSQL MS SQL bcp与BULK INSERT都不支持stdin,所以我这里使用落地到文件的方法,从PostgreSQL导入MS SQ...
SiC双向车载充电器技术解析与V2G应用
碳化硅(SiC)功率器件凭借其高击穿电场强度、优异热导率和低开关损耗特性,正在重塑电力电子系统的设计边界。作为第三代半导体材料的代表,SiC MOSFET通过降低80%的开关损耗,使车载充电器(OBC)效率突破96.5%。在双向能量转换架构中,图腾柱PFC与CLLC谐振变换器的组合实现了ZVS软开关,配合三维集成散热方案使功率密度达54W/in³。这些技术进步直接支撑了V2G(车辆到电网)应用场景,使电动车成为虚拟电厂(VPP)的关键单元。通过智能充放电策略优化,电池循环寿命可提升至4000次以上,为电力市
VS2022离线环境下的NuGet包管理:从本地源到依赖项全解析
本文详细解析了在VS2022离线环境下如何高效管理NuGet包,包括搭建本地NuGet源的两种方案(本地文件夹源和私有NuGet服务器)、获取离线包的三大渠道以及依赖项处理的实战技巧。通过自动化脚本和依赖树分析工具,帮助开发者解决离线环境中的依赖项黑洞问题,提升开发效率。
使用Python将PostgreSQL数据导出到Excel
Using Python to export data from PostgreSQL to an Excel spreadsheet. 使用Python将数据从PostgreSQL导出到Excel电子表格。 There is a baffling selection of reporting software out there with very sophisticated function...
百度地图小区边界爬取
百度地图 小区边界爬取 完整项目地址-github 数据源:百度地图api 项目结构 RESIDENTIALAREABOUNDARY │ ResidentialAreaBoundaryControl.py 主函数 │ ResidentialAreaBoundaryFunc.py 方法库 │ ├─Auxiliary │ crawelFunc.p...
python DBUtils数据连接池与ms sql配合用法
#coding=utf-8import os,psycopg2import _mssqlimport pymssqlfrom DBUtils.PooledDB import PooledDBhosts="192.168.1.32"users="test"passwords="12345"dbnames="testdb"ms_hosts="192.168.1.20"ms_users="sa"ms_p
Spark入门:从零到能跑的实战教程
Spark 的强大在于它统一了大数据处理的多种场景,从批处理到流处理,从 SQL 到机器学习。对于初学者来说,理解 Spark 的核心理念——内存计算和分布式抽象,是最重要的一步。接着,学会用 PySpark 搭建环境,能读数据、能写 SQL,基本上就入门了。剩下的路,就是通过实战去加深理解。写到这里,相信你对 Spark 已经有了一个比较完整的认识。下一步,不妨自己动手写几个 PySpark 脚本,跑一跑日志数据,或者尝试用 Spark SQL 做一个统计。
从3D相机数据到三维模型:Halcon实战深度图、亮度图与点云转换全流程
本文详细解析了如何利用Halcon将3D相机采集的深度图、亮度图转换为三维点云模型的完整流程。通过实战案例分享,涵盖数据格式处理、点云生成方法(SDK接口与纯Halcon实现)、三维模型可视化优化等关键技术,帮助工程师解决工业检测中的实际难题,提升三维重建精度与效率。
PostgreSQL 表结构查询:\d 命令与 SQL 查询的 5 个性能与场景对比
本文深入对比了PostgreSQL中查看表结构的两种方法:`\d`命令和`INFORMATION_SCHEMA` SQL查询。从性能、信息完整性、自动化集成能力、权限要求等5个维度进行分析,帮助开发者根据实际场景选择最佳方案。测试显示`\d`命令性能更优,而`INFORMATION_SCHEMA`更适合跨平台应用开发。
电子元器件-三极管终终篇:三极管工作原理详解、参数/手册详解、开关应用详解、Ib电流研究、开关应用实例
三极管工作原理与应用摘要 三极管是一种电流控制器件,通过小基极电流控制大集电极电流。其内部结构由高掺杂发射区、薄低掺杂基区和中等掺杂集电区组成,形成NPN或PNP结。三极管有三种工作状态: 截止区:发射结和集电结均反偏,无放大作用 放大区:发射结正偏,集电结反偏,Ic=βIb 饱和区:两结均正偏,Ic不再随Ib增大 作为开关使用时,需确保三极管深度饱和(Vce≈0.2V)。设计要点包括: 基极电阻计算确保Ib足够大 集电极电阻控制Ic 基极加下拉电阻提高抗干扰 NPN管作地开关,PNP管作电源开关 典型应用
LlamaIndex文本到SQL实战:构建可审计的PostgreSQL语义查询引擎
文本到SQL是自然语言处理与数据库交互的关键技术,其核心在于将用户意图精准映射为结构化查询语句。原理上依赖语义理解、表结构感知与向量检索协同,技术价值体现在可解释性、执行可控性和生产级安全防护。相比黑盒式方案,LlamaIndex通过显式schema描述、pgvector语法注入和三层过滤机制,实现SQL生成过程的全程可观测与可干预。典型应用场景包括BI自助分析、SaaS数据对话模块及开发者SQL逻辑验证。本文聚焦PostgreSQL适配,深入解析向量维度对齐、IVFFlat索引优化、权限最小化设计等工程落
Devexpress16.2.6破解工具
Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具
pscad IEEE标准系统搭建说明
pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。
aiosql - 简单的Python SQL工具
aiosql 是一个开源项目,它允许开发者在 Python 程序中使用 `.sql` 文件来组织 SQL 语句,这样可以在不失去使用其他 SQL 文件的能力的同时,将它们加载到 Python 应用程序中作为方法调用。该项目的目标是支持标准的 PEP 249 接口和基于 `asyncio` 的数据库驱动程序,从而支持多种 SQL 数据库,包括 SQLite、PostgreSQL、MySQL、Mari
华为的C语言编程规范.pdf
华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。
Python中pandas函数操作数据库
python强大的处理数据的能力很大一部分来自Pandas,pandas不仅限于读取本地的离线文件,也可以在线读取数据库的数据,处理后再写回数据库中。pandas主要是以sqlalchemy方式与数据库建立链接,支持Mysql、postgresql、Oracle、MS SQLServer、SQLite等主流数据库。 一:创建链接数据库引擎 from sqlalchemy impor
ET2012新版免狗免安装绿色软件
ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,
SQL中嵌入Python/R:实现分析即服务的工程实践
SQL内嵌Python/R能力,本质是将统计建模与机器学习能力以函数形式注入数据查询层,其底层原理涉及数据库原生扩展、计算引擎桥接与服务化API网关三类架构。该技术突破传统ETL瓶颈,显著提升分析实时性与治理可控性,具备强事务一致性、权限隔离和版本可溯等工程价值。典型应用场景包括实时风控评分、生存分析、特征工程SQL化及A/B测试指标动态计算。尤其在金融、医疗与电商领域,已成为支撑‘分析即服务(Analytics-as-a-Service)’的关键基础设施,而PL/Python、pandas_udf和HTT
Python操作PostgreSQL完整教程:从连接配置到事务处理全解析
掌握Python数据库操作核心技能,本文提供PostgreSQL连接配置、增删改查及事务处理完整示例。涵盖psycopg2应用、异常处理与安全实践,适用于Web开发与数据自动化场景,Python数据库操作示例丰富实用,值得收藏。
Python连接与操作MS Access数据库的三种主流方案及避坑指南
本文详细介绍了Python连接与操作MS Access数据库的三种主流方案(pyodbc、adodbapi、原生ADO组件)及避坑指南。针对驱动安装、连接配置等常见问题提供实用解决方案,帮助开发者高效处理Access数据库操作中的兼容性和性能优化问题。
PostgreSQL 16 实战:Python 连接池与 Reddit 级并发优化 3 要点
本文深入探讨了PostgreSQL 16与Python连接池技术在Reddit级高并发场景下的优化实践。通过分析连接池的核心价值、Python生态中的asyncpg和psycopg3配置方案,以及针对读多写少、突发写入和长事务等不同业务场景的优化策略,帮助开发者显著提升系统性能。文章还介绍了PostgreSQL 16的新特性如何增强监控能力,并结合实战案例展示了优化效果。
Zephyr 板级支持实战:Raytac AN54LQ-DB-15(nRF54L15 SoC)开发板全面解读与烧录指南
Raytac AN54LQ-DB-15 是台湾厂商 Raytac 基于自家 AN54LQ-15 模块推出的评估开发板,核心采用 Nordic Semiconductor nRF54L15 SoC。本文以 Zephyr 仓库中的板卡文档([boards/raytac/an54lq_db_15/doc/index.rst](https://link.gitcode.com/i/643ab0f7e880
365



被折叠的 条评论
为什么被折叠?



