Oracle数据库批量插入CSV数据

Oracle数据库批量插入CSV数据

最近遇到一个比较蛋疼的事,需要把70G的csv数据导入到Oracle数据库中。一开始觉得没啥,可是当开始导入的时候我发现一个问题,好TM慢…
在这里插入图片描述
最后问了好多朋友,找了个批量导入的方法

下面是我的数据格式:
在这里插入图片描述
第一列是时间格式的数据,Oracle数据库插入数据对时间格式的数据要求和其他数据库不同,需要进行格式转换,所以插入语句的建立要写对,具体可以自己去了解一下

1、链接数据库

oracle_prepare.py文件,这个是用来数据库交互的:

	import cx_Oracle 
	
	class OrecleCommand(object):
	
	    def __init__(self):
	        self.host = "localhost:1521/orcl"                                      # IP/端口
	        self.user = "****"                                                     # 用户名
	        self.password = "****"                                                 # 密码
	
	    def connectOracle(self):
	        try:
	            self.conn = cx_Oracle.connect(self.user, self.password, self.host)
	            self.cursor = self.conn.cursor()
	        except cx_Oracle.Error as error:
	            print(error)
	
	    def insertDataTimeSeries(self, my_dict):
	        try:
	            self.cursor.prepare("INSERT INTO 表名(DATETIMES,RECORD,Ux,Uy,Uz,Ts,diag_sonic,CO2,H2O,diag_irga,Tc,amb_tmpr,amb_press,CO2_sig_strgth,H2O_sig_strgth) VALUES (TO_TIMESTAMP(:1,'YYYY-MM-DD HH24:MI:SS.FF6'),:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15)")
	            self.cursor.executemany(None, my_dict)
	            self.conn.commit()
	        except cx_Oracle.Error as error:
	            print(error)
	
	    def closeOracle(self):
	        self.cursor.close()
	        self.conn.close()

2、文件操作

csv_to_oracle.py文件,操作csv文件

import os
import csv
from oracle_prepare import OrecleCommand

def csv_with(csv_path, file_name_list):
    result = []
    orecleCommand = OrecleCommand()
    orecleCommand.connectOracle()                                   #建立数据库连接
    for file_item_name in file_name_list:                           #遍历文件名
        csv_all_path = os.path.join(csv_path, file_item_name)       #建立单个文件全路径
        with open(csv_all_path,"r") as csv_file:
            reader=csv.reader(csv_file)
            for line_list in reader:
                result.append((line_list[0],line_list[1],line_list[2],line_list[3],line_list[4],line_list[5],line_list[6],line_list[7],line_list[8],line_list[9],line_list[10],line_list[11],line_list[12],line_list[13],line_list[14]))
        orecleCommand.insertDataTimeSeries(result)   #插入数据入库
        result.clear()                                              #一定要清空列表!!!,不然数据会累积
    orecleCommand.closeOracle()                                     #关闭数据库连接

csv_path =r"E:\Time_CSV"                                            #所有csv的文件路径
file_name_list = os.listdir(csv_path)                               #获取所有文件路径下的文件名
csv_with(csv_path, file_name_list)

推荐参考https://blog.csdn.net/colourless/article/details/41444069#commentBox

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值