python+MySQL,将database_asset的表格(5073个证券2022年的交易日数据)全部导入数据库,并将他们合并,合并后,将表格的主键设置为证券代码、日期组成的联合主键。之二。

weixin_46873790 2023-01-20 12:27:36

python+MySQL,将database_asset的表格(5073个证券2022年的交易日数据)全部导入数据库,并将他们合并,合并后,将表格的主键设置为证券代码、日期组成的联合主键。

直接上代码,注释很清楚。

# -*- coding: UTF-8 -*-
import pymysql#导入包
import datetime
import os
db=pymysql.connect(host='localhost',port=3306,user='root',password='****',db='database_asset')#数据库链接
cur=db.cursor()#创建游标,就是用来执行sql语句的
now_time = datetime.datetime.now()#开始运行时间
print(now_time)#开始运行时间显示在屏幕上
n=0#用n记录导入文件数
# filePath = input('请输入文件所在路径:')#通过屏幕输入指定csv文件所在文件夹。
file = r'D:\database_asset'#指定csv文件所在文件夹,这之前可以用input命令,通过屏幕输入指定csv文件所在文件夹。CSDN上找的,忘记出自哪位大咖了。
for root, dirs,files in os.walk(file):
    if root != file:
        break
    for file in files:
        path = os.path.join(root, file)#绝对路径csv文件
        d=path[18:24]#证券代码
        cur.execute("load data infile %s into table gpdata fields terminated by ',' lines terminated by '\n' ignore 1 rows",path)#导入数据
        db.commit()
        cur.execute("update gpdata set dm=%s where dm is null", d)#添加证券代码
        n+=1
        print('\b' * 40 + ("已导入"+str(n)+"个文件,"+ str(n * 242)+"条数据!"+"已运行:"+str(datetime.datetime.now()-now_time)).ljust(20), end='')
cur.execute("delete from gpdata WHERE open is null")#删除开盘价为空的记录
cur.execute("alter table gpdata modify dm char(6) first")#将证券代码字段调整到最前面
db.commit()
cur.execute("alter table gpdata modify column date date not null")#将交易日期字段类型改为日期型,并设为非空字段,否则不让设置为主键。
cur.execute("alter table gpdata add primary key(dm,date)")#主键设置为证券代码、日期组成的联合主键
print("")
new_time = datetime.datetime.now()#新的时间,就是脚本运行结束的时间哈
print('开始时间:',now_time,'结束时间:',new_time,'共用时:',new_time-now_time,'共导入:',n,'个文件',n*242,'条数据,累死我了!!!')
db.commit()#“增”、“删”、“改”后提交事务,个人理解为“增”、“删”、“改”后刷新数据库
db.close()#关闭链接
end#完成任务,结束!!!

 5073个csv格式证券交易数据文件

代码运行过程,期间显示开始运行时间,监测已经导入多少个文件和多少条数据记录以及代码运行时间。

 代码运行结束,显示代码开始运行时间,代码运行结束时间,代码运行耗时,共导入多少个文件,多少条数据记录。

共运行了1小时34分钟,时间都耽误在添加证券代码上了cur.execute("update gpdata set dm=%s where dm is null", d),哪位大咖有好办法,此处帮忙优化一下,谢谢。

代码运行后,数据表结构。

代码运行后的数据。

 

代码运行后,经导入、整理共1227666条数据。

数据的逻辑备份。

 

 

 

 

 

 

 

...全文
23 1 打赏 收藏 举报
写回复
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
不争之德 2天前
  • 打赏
  • 举报
回复

非常好!

相关推荐
发帖
数据库与中间件兴趣课题研究组

7

社区成员

数据库与中间件的相关兴趣话题,研究学习
数据库架构 个人社区
社区管理员
  • 不争之德
加入社区
帖子事件
编辑了帖子 (查看)
2023-01-20 13:20
创建了帖子
2023-01-20 12:27
社区公告

大家好! 这是内蒙古自治区大数据中心的数据库与中间件课题组的线上学习社区,欢迎大家加入!

 

欢迎大家把学习过程和成果经验分享到社区里。大家共同学习,共同进步!