sheet目标数据插入函数主键模块
#coding:gbk #导入处理excel的模块 import xlrd #定义哪些字段需要判断,只支持时间字段 toSureColArray = ['CREATE_TIME','MODIFY_TIME'] #确定某个字段是否在数组中 def isColInArray(colName, colArray): for i in range(0, len(colArray)): if (colName == colArray[i]): return 1 else: return 0 #定义子sheet字段属性映射处理函数 #入参为文件描述符、、源表列字段、和目表列字段 def childSheetColFunc(fOutput, sourceTabCol, destTabCol,destTableSureArray): for i in range(2,len(sourceTabCol)): if len(destTabCol[i]) != 0: if len(sourceTabCol[i]) != 0: #在子表中,如果浪潮int_id对应的直真字段英文名称为空,在destTableSureArry不存在INT_ID属性 destTableSureArray.append(str(destTabCol[i]).upper()) fOutput.write("\t\t\t\t\tA."+str(sourceTabCol[i]).upper()+" "+str(destTabCol[i]).upper()+",\n") else: continue else: continue #for i in range(0,len(destTableSureArray)): # print("******************") # print(str(destTableSureArray[i])) # print("******************") #对creat_time和modify_time做单独处理 for i in range(0,len(toSureColArray)): if isColInArray(toSureColArray[i],destTableSureArray) == 0: fOutput.write("\t\t\t\t\tSYSDATE "+toSureColArray[i]+",\n") destTableSureArray.append(toSureColArray[i]) #定义子sheet目标数据插入函数主键模块 #入参为文件描述符、源表列字段、目表源字段 def childSheetColDesKeyFunc(fOutput, sourceTabCol, destTabCol): #如果为空表,此处会报下标溢出错误,所以入参必须保证表中有数据 if len(sourceTabCol[2]) != 0: fOutput.write("\t\t\t\t["+str(destTabCol[2]).upper()+"]\n") fOutput.write("\t\t\t\t[STATEFLAG]\n") #定义子sheet目标函数插入函数非主键模块 def childSheetColDesNKeyFunc(fOutput, sourceTabCol, destTableSureArray): if len(sourceTabCol[2]) != 0: for i in range(1,len(destTableSureArray)): fOutput.write("\t\t\t\t["+destTableSureArray[i]+"]\n") else: for i in range(0,len(destTableSureArray)): fOutput.write("\t\t\t\t["+destTableSureArray[i]+"]\n") #定义子sheet处理函数 def childSheetFunc(sheetName, sourceTable, destTable): #根据sheet名打开表 shtInstance=workBook.sheet_by_name(sheetName) #存放最终哪些浪潮字段需要映射 destTableSureArray = [] langchaoTabCol=shtInstance.col_values(4) zhizhenTabCol=shtInstance.col_values(6) print("***********现在开始生成"+str(destTable).upper()+".xml 文件***********") path="e:\\"+destTable.upper()+".xml" fOutput=open(path,"w") fOutput.write("\n") fOutput.write("\n") fOutput.write("\t\n") fOutput.write("\t\t\n") fOutput.write("\t\t\t\n") fOutput.write("\t\t\n") fOutput.write("\t\t\n") childSheetColDesKeyFunc(fOutput, zhizhenTabCol, langchaoTabCol) fOutput.write("\t\t\t\n") fOutput.write("\t\t\t\n") childSheetColDesNKeyFunc(fOutput, zhizhenTabCol, destTableSureArray) fOutput.write("\t\t\t\n") fOutput.write("\t\t\n") fOutput.write("\t\n") fOutput.write("\n") fOutput.close() print("***********"+str(destTable).upper()+".xml 文件生成完成***********") #根据主表获取子表信息并处理 def mainSheetAndProc(mainSheet): sheetName=mainSheet.col_values(2881064151) sourceTabName=mainSheet.col_values(5) destTabName=mainSheet.col_values(3) curNum = 0 for i in range(2,len(sheetName)): if len(sheetName[i]) ==0: continue curNum += 1 print(">>>>>>开始生成第"+str(curNum)+"个文件") childSheetFunc(sheetName[i], sourceTabName[i], destTabName[i]) #入口函数 if __name__=="__main__": workBook=xlrd.open_workbook("E:\\内线比对模型.xls") mainSheet=workBook.sheets()[0] mainSheetAndProc(mainSheet)
sheet目标数据插入函数主键模块的更多相关文章
- mybatis的插入数据后的主键获取
为什么要在插入数据后获取主键:当有一个订单表和订单详情表,当插入订单表的数据后,需要在订单详情表插入该订单的具体购物情况,订单详情表需要的一个列是订单表的主键或者订单ID.(通俗讲:A表的主键是B表的 ...
- 数据库插入数据返回当前主键ID值方法
当我们插入一条数据的时候,我们很多时候都想立刻获取当前插入的主键值返回以做它用.我们通常的做法有如下几种: 1. 先 select max(id) +1 ,然后将+1后的值作为主键插入数据库: 2. ...
- mysql insert插入时实现如果数据表中主键重复则更新,没有重复则插入的四种方法
[CSDN下载] Powerdesigner 设计主键code不能重复等问题 [CSDN博客] Oracle中用一个序列给两个表创建主键自增功能的后果 [CSDN博客] MySQL自增主键删除后重复问 ...
- ibatis实战之插入数据(自动生成主键)
ibatis实战之插入数据(自动生成主键) --------- 如果你将数据库设计为使用自动生成的主键,就可以使用ibatis的<selectKey>元素(该元素是<insert&g ...
- Laravel 5 插入数据后返回主键ID
方法一: $info = DB::table('表名')->insertGetId(['imgName' => $fileName]);//图片名入库后返回添加数据行的主键ID 方法二:( ...
- Java中获取刚插入数据库中的数据Id(主键,自动增长)
public int insert(String cName, String ebrand, String cGender) { String sql = "insert into Clot ...
- mybatis 插入数据并返回主键值
<insert id="insert" parameterType="com.pojo.TSubject" useGeneratedKeys=" ...
- MyBatis+MySQL 返回插入的主键ID
需求:使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值. 方法:在mapper中指定keyProperty属性,示例如下: <insert id="i ...
- PHP获取新插入的主键id
近期在做订单系统开发的时候遇到了此类情景,A表内插入后返回新插入的主键ID,然后用于B表插入数据并携带此id. 目前有几个方法总结 No1.每次插入数据之后返回A表内的最大值,但是对于多用户以及高并发 ...
随机推荐
- iOS 使用interface builder 创建太复杂的constrains时容易产生crash
今天写程序,遇到了crash,在界面初始化时不会有,想切换到别的tab页就报错了.主要内容如下: Cannot find an outgoing row head for incoming head ...
- IOS多线程(NSOperation,NSOperationQueue)
含义:NSOperation,NSOperationQueue是什么. The NSOperation class is an abstract class you use to encapsulat ...
- JQuery发送ajax请求不能用数组作为参数
JQuery发送ajax请求不能用数组作为参数,否则会接收不到参数, 一.js代码如下: $('#delete-button').click(function(){ var select ...
- 利用runTime,实现以模型为主的字典转模型(注意与KVC的区别)
将字典转化为模型,面向模型开发,是在开发中最为常用的功能.利用KVC可以将字典转换为模型,但是前提有三个约束,一个是必须保证模型的属性个数大于等于字典个数,二是属性名称与字典的key必须相同,三是对于 ...
- HDU1712周期
ACboy needs your help Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- 解决 Eclipse “alt+/”快捷键 无效
解决方案: 1. 检查windows ——preferences ——java ——editor —— content assist - advanced,在右上方有一行“select the pro ...
- Road Construction(poj 3352)
题意:求最少天几条边,使这个无向图变成双连通图. /* tarjan缩点后,形成一棵树,求出叶子节点数tot,答案是(tot+1)/2 */ #include<cstdio> #inclu ...
- JQuery的AJAX封装加例子
将json字符串转换为javascript对象有两种方法:var strs = eval("(" + data + ")");var strs = $.pars ...
- Python语言开发的一些问题
1.Python是如何进行内存管理的? Python引用了一个内存池(memory pool)机制,即Pymalloc机制(malloc:n.分配内存),用于管理对小块内存的申请和释放内存池(memo ...
- sybase常用SQL语句,工作中积累的
-------创建sybase设备 语句--------- disk init name="DEV_DB_CLIENT_DAT26", physname="F:\syba ...