码迷,mamicode.com
首页 > 数据库 > 详细

csv导入到数据库(目标参考注释)

时间:2020-04-23 11:48:31      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:cal   sid   into   epo   select   div   exec   端口   rac   

import cx_Oracle as cx
import csv

#flag是你的日期列在哪一列,默认第一列
def save_data(reader,info,table_data,flag =1):     #目标:1、如果数据库中没有数据,那么所有数据都插入
                                                        # 2、如果数据库里数据日期大于当前需要插入的数据日期,那么不插入
    for i, rows in enumerate(reader):
        rowsdata = ‘‘
        if i > 0:
            for j in range(len(rows)):
                rowsdata += \‘ + rows[j] + \‘,    #构造values(‘‘,‘‘,‘‘,)
            rowsdata = rowsdata[:-1]                  #去掉末尾的 ,

            if info[0][0] is None or info[0][0] < int(rows[flag - 1]):    #参照【目标】,info[0][0]就是数据库里最大的,参考file_addr函数的sql
                cursor.execute("insert into " + table_data + " values( " + rowsdata + ")")  #执行导入
                conn.commit()

def file_addr():                                            #   有其他表直接再新增函数就可以
    f =  open(E:/shuju/3.csv)
    reader = csv.reader(f)
    sql = select max(oc_date) from reportdata.dw_data_hy
    cursor.execute(sql)
    info = cursor.fetchall()
    save_data(reader,info,table_data,flag=2)    #如果不是第一列,在这里加flag
    f.close()


if __name__ == __main__:
    table_data = dw_data_hy                #表名
    username = reportdata                  #数据库名
    passwd = reportdata                    #数据库密码
    host = localhost                       # ip
    port = 1521                            # 端口
    sid = orcl                             #数据库实例名
    tns = cx.makedsn(host,port,sid)          #tns固定搭配
    conn = cx.connect(username,passwd,tns)   #数据库连接
    cursor = conn.cursor()                   #启用游标指针

    file_addr()
    print(XXX数据导入成功!)

 

csv导入到数据库(目标参考注释)

标签:cal   sid   into   epo   select   div   exec   端口   rac   

原文地址:https://www.cnblogs.com/zsf-note/p/12759621.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!