csv、excel导入oracle

hcsv导入oracle

  1. #coding:gbk
  2. import csv
  3. import cx_Oracle
  4. fields = []
  5. data = []
  6. table_name = ‘ygl_test3‘
  7. file_name = ‘清单.csv‘
  8. with open(file_name, ‘rb‘) as f:
  9. reader = csv.reader(f)
  10. contents = [i for i in reader]
  11. title = contents[0]
  12. data = contents[1:]
  13. conn = cx_Oracle.connect(‘user/[email protected]‘)
  14. cursor = conn.cursor()
  15. #生成create table语句中字段名字符串
  16. for i in title:
  17. fields.append(i+‘ varchar2(200)‘)
  18. fields_str = ‘, ‘.join(fields)
  19. sql = ‘create table %s (%s)‘ % (table_name, fields_str)
  20. print sql
  21. #根据excel列名创建数据表的字段
  22. cursor.execute(sql)
  23. #生成executemany语句中的:1,:2字段参数格式
  24. a = [‘:%s‘ %i for i in range(len(title)+1)]
  25. value= ‘,‘.join(a[1:])
  26. sql = ‘insert into %s values(%s)‘ %(table_name, value)
  27. print sql
  28. #把所有字段插入数据值
  29. cursor.prepare(sql)
  30. cursor.executemany(None, data)
  31. cursor.close()
  32. conn.commit()
  33. conn.close()

升级版:

  1. #coding:gbk
  2. import cx_Oracle
  3. import csv
  4. import xlrd
  5. class ImportOracle(object):
  6. #工厂模式初始化导入函数inoracle,用作读取文件数据
  7. def inoracle(self):
  8. pass
  9. #oracle 连接和写入函数
  10. def ConnOracle(self):
  11. conn = cx_Oracle.connect(‘user/[email protected]‘)
  12. cursor = conn.cursor()
  13. #以数字开头的字段加个字符a
  14. self.title = [i if i[0].isdigit() == False else ‘a‘+i for i in self.title ]
  15. fields = [i+‘ varchar2(200)‘ for i in self.title]
  16. fields_str = ‘, ‘.join(fields)
  17. sql = ‘create table %s (%s)‘ % (self.table_name, fields_str)
  18. print sql
  19. cursor.execute(sql)
  20. a = [‘:%s‘ %i for i in range(len(self.title)+1)]
  21. value= ‘,‘.join(a[1:])
  22. sql = ‘insert into %s values(%s)‘ %(self.table_name, value)
  23. print sql
  24. cursor.prepare(sql)
  25. cursor.executemany(None, self.data)
  26. cursor.close()
  27. conn.commit()
  28. conn.close()
  29. #ImportOracle的子类,用作导入csv文件的类
  30. class ImportOracleCsv(ImportOracle):
  31. #重构父类的inoracle函数,用作从csv读取数据,返回标题和内容
  32. def inoracle(self):
  33. with open(self.filename, ‘rb‘) as f:
  34. reader = csv.reader(f)
  35. contents = [i for i in reader]
  36. title = contents[0]
  37. data = contents[1:]
  38. return (title, data)
  39. #ImportOracle的子类,用作导入excel文件的类
  40. class ImportOracleExcel(ImportOracle):
  41. #重构父类的inoracle函数,用作从EXCEL文件读取数据,返回标题和内容
  42. def inoracle(self):
  43. wb = xlrd.open_workbook(self.filename)
  44. sheet1 = wb.sheet_by_index(0)
  45. title = sheet1.row_values(0)
  46. data = [sheet1.row_values(row) for row in range(1, sheet1.nrows)]
  47. return (title, data)
  48. #ImportOracle的子类,在文件类型错的情况返回
  49. class ImportError(ImportOracle):
  50. def inoracle(self):
  51. print ‘Undefine file type‘
  52. return 0
  53. #工厂选择类,csv文件返回ImportOracleCsv类,EXCEL文件返回ImportOracleExcel类
  54. class ChooseFactory(object):
  55. choose = {}
  56. choose[‘csv‘] = ImportOracleCsv()
  57. choose[‘xlsx‘] = ImportOracleExcel()
  58. choose[‘xls‘] = ImportOracleExcel()
  59. def choosefile(self, ch):
  60. if ch in self.choose:
  61. op = self.choose[ch]
  62. else:
  63. op = ImportError()
  64. return op
  65. if __name__ =="__main__":
  66. #定义文件名和数据库表名
  67. file_name = ‘清单.xlsx‘
  68. table_name= ‘ygl_test‘
  69. #获取文件类型
  70. op = file_name.split(‘.‘)[-1]
  71. factory = ChooseFactory()
  72. #选择工厂类处理,cal被赋值为处理的具体类
  73. cal = factory.choosefile(op)
  74. #设置类属性(文件名)
  75. cal.filename = file_name
  76. #根据函数返回值设置类属性(标题,内容)
  77. (cal.title, cal.data) = cal.inoracle()
  78. #设置类属性(表名)
  79. cal.table_name = table_name
  80. #调用类的导入数据库函数
  81. cal.ConnOracle()

来自为知笔记(Wiz)

附件列表

时间: 2024-08-07 21:41:35

csv、excel导入oracle的相关文章

Excel导入oracle库

Excel导入oracle库 ? 建表 ? /*==============================================================*/ /* DBMS name: ORACLE Version 10gR2 */ /* Created on: 2017/9/18/周一 14:19:00 */ /*==============================================================*/ ? ? drop table D

Excel导入Oracle数据库

1.录入excel测试表格,test.xls.2.另存为.csv格式3.创建sql*loader控制文件test.ctl,内容如下:Load dataInfile 'c:\test.csv'insert Into table test Fields terminated by ','(column1,column2,column3,column4,column5) 需要将数据文件拷贝到对应位置 4.到数据库中建立对应的测试表test create table test (column1 Varc

如何将Excel导入Oracle数据库

http://jingyan.baidu.com/article/14bd256e2d8d01bb6d2612b4.html oracle>sqlldr userid=SYSTEM/admin control='d:\ssjk.ctl'

分享知识-快乐自己:Excel快速导入Oracle 数据库

需求: oracle 数据库有一个student表,现有一个excel表:student.xlsx,需导入oracle数据库student表中. student表的拥有者是c##MLQ1  密码为:xxx 表结构: 打开需导入的excel表格,单击office按钮,选择另存为--其他格式 选择保存路径(置于D:\),保存类型CSV(逗号分隔)(*.csv),设置文件名为student.csv,单击保存   新建input.ctl文件(置于D:\),内容为: load data infile 'd

kettle将Excel数据导入oracle

导读 Excel数据导入Oracle数据库的方法: 1.使用PL SQL 工具附带的功能,效率比较低 可参考这篇文章的介绍:http://www.2cto.com/database/201212/176777.html 2.使用Kettle工具,免费,相比之下功能更丰富,可实现一定的业务逻辑,推荐使用 Kettle将Excel数据导入Oracle过程记录如下: 1.准备Excel文件: 注意:Excel文件要有字段名称说明:如这里的id,name,age 2.打开Kettle,文件-->新建--

利用TOAD实现把EXCEL数据导入oracle数据库

利用TOAD实现把EXCEL数据导入oracle数据库 工具:   Toad11.7z(百度搜索,直接下载) 1.将Excel文件中某些字段导入到Oracle数据库的对应表 连接想要导入的数据库 ,然后Database->Import->Table Data打开了导入窗口,如下图   选择一个数据库表,点击Show Data按钮,可以显示表中的内容 其中schema 就是这张表的所属用户 Object type 就是 table Object name 就是表的名称 Commit mode 

.net excel利用NPOI导入oracle

1.链接数据库 引用System.Data.OracleClient: //数据库链接字符串   Data Source如:192.168.5.153:1521/orcl string linkStr = "User ID=" + name + "; Password=" + password + "; Data Source=" + oraLink; OracleConnection oraCon = new OracleConnection(

代码执行批量Excel数据导入Oracle数据库

由于基于Oracle数据库上做开发,因此常常会需要把大量的Excel数据导入到Oracle数据库中,其实如果从事SqlServer数据库的开发,那么思路也是一样的,本文主要介绍如何导入Excel数据进入Oracle数据库的内容. 方法一: 1.准备数据:在excel中构造出需要的数据 2.将excel中的数据另存为文本文件(有制表符分隔的) 3.将新保存到文本文件中的数据导入到pl*sql中 在pl*sql中选择tools--text importer,在出现的窗口中选择Data from Te

pl/sql 如何将Excel文件数据导入oracle的数据表?

1.准备导入数据的excel文件 注意:excel列名和数据表列名必须相同,excel文件sheet2和sheet3可以删除 1)excel文件格式 2)数据表格式 2.打开pl/sql ,找到工具---> ODBC导入器 3.选择excel文件,输入用户/密码 4.点击连接,找到磁盘中要导入的文件 5.选择要导入文件的工作表sheet1 6.切换到转入Oracle,选择要导入oracle的那个表 7.点击导入,执行成功,查看结果 原文地址:https://www.cnblogs.com/xie