#oracle版

首先新建python脚本(d:/python/orclImport.py)

  1. import os #引入os包
  2.  
  3. if __name__ == '__main__':
  4. #遍历文件夹下所有的dmp文件,其中filename为所有文件、文件夹的名称。
  5. #因为我文件夹下确定都是dmp文件,所以无需进行特殊判断
  6. for filename in os.listdir("D:\dmp"):
  7. # 调用cmd窗口,并执行dmp的导入命令
  8. # 因为dmp文件数据量太大,我选择一条一条的去执行,就是如此,电脑已经打字都卡了
  9. os.system("imp orcl/123456@127.0.0.1/zrr file=\"D:\dmp\\"+filename+"\" full=y ignore=y")

在命令行执行 python d:/python/orclImport.py

# mysql版

  1. import os
  2. import pymysql
  3. # import datetime, time
  4. # from config import *
  5.  
  6. database_table_name = "stockdata"
  7. infile_path = 'E:/学习资料/stock_data'
  8. outfile_path = 'E:/学习资料/stock_data1'
  9.  
  10. # 删除首行的股票代码和空行
  11. def delblankline(infile, outfile):
  12. infp = open(infile, "r")
  13. outfp = open(outfile, "w")
  14. lines = infp.readlines()
  15. for li in lines[1:]:
  16. if li.split():
  17. outfp.writelines(li)
  18. infp.close()
  19. outfp.close()
  20.  
  21. def csv2bigcsv(path, outfile):
  22. """1.删除股票代码+空行 2.合并所有文件数据"""
  23. # infp = open(infile, "r")
  24. outfp = open(outfile, "w")
  25. i = 1
  26. for filename in os.listdir(path):
  27. domain = os.path.abspath(path) # 获取文件夹的路径,也可去掉
  28. filepath = os.path.join(domain, filename) # 文件的完整路径
  29. infp = open(filepath, 'r') # 读取文件内容
  30. lines = infp.readlines()
  31. if i == 1: outfp.writelines(lines[3].split())
  32. for li in lines[5:]:
  33. if li.split():
  34. outfp.writelines(li)
  35. infp.close()
  36. i += 1
  37. outfp.close()
  38.  
  39. # 执行sql语句
  40. def db_excute(sql):
  41. # local_infile = 1 执行load data infile
  42. db_info = {
  43. 'host': '127.0.0.1',
  44. 'user': 'root',
  45. 'password': 'root',
  46. 'port': 3306,
  47. 'database': 'test',
  48. 'charset': 'utf8',
  49. 'local_infile': 1
  50. }
  51. db = pymysql.connect(**db_info)
  52. # db.set_charset('utf8')
  53. cursor = db.cursor()
  54. try:
  55. cursor.execute(sql)
  56. db.commit()
  57. except pymysql.Error as e:
  58. print(e)
  59. finally:
  60. db.close()
  61.  
  62. # 将单个csv文件插入数据库
  63. def csv2mysql(file_path, database_table_name):
  64. ''' LOAD DATA LOCAL INFILE "/root/test/infohash_20180603.txt"
  65. INTO TABLE xl_log_analysis.infohash_20180603
  66. FIELDS TERMINATED BY ','
  67. OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"'
  68. LINES TERMINATED BY '\r\n'
  69. IGNORE 1 LINES ( infohash );'''
  70. '''LINES TERMINATED BY \\r\\n WIN 为\\r,LINUX 为\\n'''
  71.  
  72. # " LOAD DATA LOCAL INFILE '" + file_path + "'"\
  73. # + " INTO TABLE " + database_table_name \
  74. # + " FIELDS TERMINATED BY ',' " \
  75. # + " OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"' " \
  76. # + " LINES TERMINATED BY '\\r\\n' " \
  77. # + " IGNORE 5 LINES; "
  78.  
  79. # 报1148错误,可以本地开启local_infile服务
  80. # set global local_infile = 'ON';
  81. sql = '''LOAD DATA LOCAL INFILE '{0}' INTO TABLE {1}
  82. CHARACTER SET UTF8
  83. FIELDS TERMINATED BY ','
  84. ENCLOSED BY '\"' ESCAPED BY '\"'
  85. LINES TERMINATED BY '\\r\\n'
  86. IGNORE 5 LINES (`symbol`, `date`, `opening_price`, `highest_price` , `lowest_price`, `closing_price`,
  87. `change`, `trading_volume`, `turnover`, `circulation_market_value`, `total_value`,
  88. `turnover_rate`, `post_resumption_price`, `report_type`, `report_time`, `PE_TTM`,
  89. `PS_TTM`, `PCF_TTM`, `PB`, `ex_duplicate_price`, `tradable_share`, `total_stock_issue`,
  90. `total_assets`, `current_asset`, `gross_liabilities`, `current_liabilities`, `total_operating_income`,
  91. `operating_income`, `total_operating_costs`, `operating_costs`, `operating_profit`, `net_profits`,
  92. `selling_expenses`, `administration_expenses`, `financial_expenses`, `net_cash_flow`,
  93. `NOCF`, `NICF`, `NFCF`, `ROE_TTM`);'''.format(file_path, database_table_name)
  94. db_excute(sql)
  95. # print(sql)
  96.  
  97. # 将文件路径下的所有csv文件插入数据库
  98. def to_mysql(infile_path, database_table_name):
  99. for filename in os.listdir(infile_path):
  100. print('正在上传:', filename)
  101. # domain = os.path.abspath(infile_path) # 获取文件夹的路径,也可去掉
  102. # file_path = os.path.join(domain, filename) # 文件的完整路径
  103. file_path = infile_path + '/' + filename
  104. # print('file_path: ',file_path)
  105. csv2mysql(file_path, database_table_name)
  106.  
  107. if __name__ == '__main__':
  108. # delblankline("sh600000.csv", "sh600000_.csv")
  109. # csv2bigcsv(infile_path, "all-groups.csv")
  110.  
  111. # 创建新表
  112. createtable_sql = '''CREATE TABLE IF NOT EXISTS `{0}` (
  113. `id` INT NOT NULL AUTO_INCREMENT COMMENT 'ID',
  114. `symbol` VARCHAR ( 10 ) DEFAULT NULL COMMENT '股票代码',
  115. `date` DATE DEFAULT NULL COMMENT '日期',
  116. `opening_price` FLOAT DEFAULT NULL COMMENT '开盘价',
  117. `highest_price` FLOAT DEFAULT NULL COMMENT '最高价',
  118. `lowest_price` FLOAT DEFAULT NULL COMMENT '最低价',
  119. `closing_price` FLOAT DEFAULT NULL COMMENT '收盘价',
  120. `change` FLOAT DEFAULT NULL COMMENT '涨跌幅',
  121. `trading_volume` BIGINT DEFAULT NULL COMMENT '交易量',
  122. `turnover` BIGINT DEFAULT NULL COMMENT '交易额',
  123. `circulation_market_value` BIGINT DEFAULT NULL COMMENT '流通市值',
  124. `total_value` BIGINT DEFAULT NULL COMMENT '总市值',
  125. `turnover_rate` FLOAT DEFAULT NULL COMMENT '换手率',
  126. `post_resumption_price` FLOAT DEFAULT NULL COMMENT '后复权价格',
  127. `report_type` VARCHAR ( 64 ) DEFAULT NULL COMMENT '报告类型',
  128. `report_time` DATE DEFAULT NULL COMMENT '报告时间',
  129. # 市盈率PE 市净率PB 市销率PS 市现率PCF
  130. `PE_TTM` FLOAT DEFAULT NULL COMMENT '市盈率TTM',
  131. `PS_TTM` FLOAT DEFAULT NULL COMMENT '市销率TTM',
  132. `PCF_TTM` FLOAT DEFAULT NULL COMMENT '市现率TTM',
  133. `PB` FLOAT DEFAULT NULL COMMENT '市净率',
  134. `ex_duplicate_price` FLOAT DEFAULT NULL COMMENT '前复权价格',
  135. `tradable_share` BIGINT DEFAULT NULL COMMENT '流通股本',
  136. `total_stock_issue` BIGINT DEFAULT NULL COMMENT '总股本',
  137. `total_assets` BIGINT DEFAULT NULL COMMENT '总资产',
  138. `current_asset` BIGINT DEFAULT NULL COMMENT '流动资产',
  139. `gross_liabilities` BIGINT DEFAULT NULL COMMENT '总负债',
  140. `current_liabilities` BIGINT DEFAULT NULL COMMENT '流动负债',
  141. `total_operating_income` BIGINT DEFAULT NULL COMMENT '营业总收入',
  142. `operating_income` BIGINT DEFAULT NULL COMMENT '营业收入',
  143. `total_operating_costs` BIGINT DEFAULT NULL COMMENT '营业总成本',
  144. `operating_costs` BIGINT DEFAULT NULL COMMENT '营业成本',
  145. `operating_profit` BIGINT DEFAULT NULL COMMENT '营业利润',
  146. `net_profits` BIGINT DEFAULT NULL COMMENT '净利润',
  147. `selling_expenses` BIGINT DEFAULT NULL COMMENT '销售费用',
  148. `administration_expenses` BIGINT DEFAULT NULL COMMENT '管理费用',
  149. `financial_expenses` BIGINT DEFAULT NULL COMMENT '财务费用',
  150. `net_cash_flow` BIGINT DEFAULT NULL COMMENT '净现金流',
  151. `NOCF` BIGINT DEFAULT NULL COMMENT '经营活动净现金流operating activities',
  152. `NICF` BIGINT DEFAULT NULL COMMENT '投资活动净现金流investment activities',
  153. `NFCF` BIGINT DEFAULT NULL COMMENT '筹资活动净现金流financing activities',
  154. `ROE_TTM` BIGINT DEFAULT NULL COMMENT '净资产收益率TTM Net asset yield',
  155. PRIMARY KEY ( `id` )
  156. ) ENGINE = INNODB DEFAULT CHARSET = UTF8MB4;'''.format(database_table_name)
  157. db_excute(createtable_sql) # 创建新表
  158. print(createtable_sql)
  159. to_mysql(infile_path, database_table_name) # 导入infohash数据到mysql xl_log_analysis 表

  

将文件夹下的所有csv文件存入数据库的更多相关文章

  1. android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件

    简介 XStream 是一个开源项目,一套简单实用的类库,用于序列化对象与 XML 对象之间的相互转换. 将 XML 文件内容解析为一个对象或将一个对象序列化为 XML 文件. 1.下载工具 xstr ...

  2. 读取同一文件夹下多个txt文件中的特定内容并做统计

    读取同一文件夹下多个txt文件中的特定内容并做统计 有网友在问,C#读取同一文件夹下多个txt文件中的特定内容,并把各个文本的数据做统计. 昨晚Insus.NET抽上些少时间,来实现此问题,加强自身的 ...

  3. C#_IO操作_查询指定文件夹下的每个子文件夹占空间的大小

    1.前言 磁盘内存用掉太多,想查那些文件夹占的内存比较大,再找出没有用的文件去删除. 2.代码 static void Main(string[] args) { while (true) { //指 ...

  4. java批量解压文件夹下的所有压缩文件(.rar、.zip、.gz、.tar.gz)

    // java批量解压文件夹下的所有压缩文件(.rar..zip..gz..tar.gz) 新建工具类: package com.mobile.utils; import com.github.jun ...

  5. linux 系统获得当前文件夹下存在的所有文件 scandir函数和struct dirent **namelist结构体[转]

    linux 系统获得当前文件夹下存在的所有文件 scandir函数和struct dirent **namelist结构体 1.引用头文件#include<dirent.h> struct ...

  6. MATLAB读取一个文件夹下的多个子文件夹中的多个指定格式的文件

    MATLAB需要读取一个文件夹下的多个子文件夹中的指定格式文件,这里以读取*.JPG格式的文件为例 1.首先确定包含多个子文件夹的总文件夹 maindir = 'C:\Temp Folder'; 2. ...

  7. 【bat批处理】批量执行某个文件夹下的所有sql文件bat批处理

    遍历文件夹下所有的sql文件,然后命令行执行 for /r "D:\yonyou\UBFV60\U9.VOB.Product.Other" %%a in (*.sql) do ( ...

  8. MapReduce会自动忽略文件夹下的.开头的文件

    MapReduce会自动忽略文件夹下的.开头的文件,跳过这些文件的处理.

  9. matlab操作之--读取指定文件夹下的“指定格式”文件

    %% 正负样本所在folder fext='*.png';%要读取的文件格式 positiveFolder='F:\课题\Crater detection\machingLearning\Positi ...

随机推荐

  1. 拦截器实现HandlerInterceptor没有提示实现里面的方法

    在自定义拦截器的时候需要实现HandlerInterceptor,但是没有报错,如图: 如果想实现里面的方法,快捷键是command+o  

  2. pytest文档13-allure2生成html报告(史上最详细)

    前言 allure是一个report框架,支持java的Junit/testng等框架,当然也可以支持python的pytest框架,也可以集成到Jenkins上展示高大上的报告界面. 环境准备 1. ...

  3. backbone点滴

    可以查看http://www.css88.com/doc/backbone/ backbone与angular http://www.infoq.com/cn/articles/backbone-vs ...

  4. C#时间戳的简单实现

    Introduction: 在项目开发中,我们都经常会用到时间戳来进行时间的存储和传递,最常用的Unix时间戳(TimeStamp)是指格林尼治时间1970年1月1日0时(北京时间1970年1月1日8 ...

  5. HBase过滤器的使用

    一.常用过滤器: 1.数据准备: Rowkey:001 Family:Quilfifier address value: 昆明市西山区 Rowkey:001 Family:Quilfifier age ...

  6. python3中 getpass模块使用

    getpass在IDLE中报错 CMD中可以使用 import getpass usr = getpass.getuser print(usr) 返回值为当前windows登陆用户名

  7. Ansible 小手册系列 十四(条件判断和循环)

    条件判断 When 语句 在when 后面使用Jinja2 表达式,结果为True则执行任务. tasks: - name: "shut down Debian flavored syste ...

  8. [Leetcode 15]三数之和 3 Sum

    [题目] Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? ...

  9. 函数式语言(Functional language)简单介绍

    函数式语言(functional language)一类程序设计语言,是一种非冯·诺伊曼式的程序设计语言.函数式语言主要成分是原始函数.定义函数和函数型. 函数式语言有:Haskell,Clean,M ...

  10. oracle开发错误

    先展示一个错误写法 public static String printGg_bysly0List() {// 外网 TransManager tm = new TransManager(); try ...