通过python将大批excel数据导入mysql:
利用Python从EXCEL中读取两列数据存储在LIST中然后连接数据库利用insert语句和LIST 内容结合,导入数据库;然后再从数据库读取表的字段和内容,存放到EXCEL新表中即可。
以下的导入的核心代码:
#按照说明安装即可
import win32comclient as win32
import MySQLdb
app='Excel'
#启动EXCEL程序
xl=win32gencacheEnsureDispatch('%sApplication' % app)
#打开相应的EXCEL文件
xlbook=win32Dispatch('ExcelApplication')WorkbooksOpen('D:\\pyd\\opsdataxls')
#读取EXCEL工具表,打开要导入数据的表
sh=xlbookWorksheets('sheet2')
#建立一个空LIST和两个循环参数
dfun=[]
jcount=2
ncount=1
#从第一列开始向下循环,找到为空的那一行返回行数,即为第ncount行为空
for ncount in range(1,65566):
if shCells(ncount,1)Value==None:
break
else:
continue
#print ncount,测试代码,测试ncount值
#EXCEL的数据安排为第一行是字段,第二行开始是数据,故从第2行开始循环,将两列数据合并到一个LIST中
#LIST结构为[('a','b'),('c','d')]
for jcount in range(2,ncount):
dfunappend((shCells(jcount,1)Value,shCells(jcount,2)Value))
#关闭EXCEL程序
#xlApplicationQuit()
#print dfun,测试代码测试dfun的数据
#建立一个空LIST fo用来存放字段,读取EXCEL中第一行的字段存储到fo中
fo=[]
icount=1
for icount in range(1,2):
foappend((shCells(1,icount)Value,shCells(1,icount+1)Value))
#测试代码,print fo
#打开MYSQL链接
conn=MySQLdbconnect(host='localhost',user='root',passwd='0789asd',db='python')
#获取游标 *** 作
cursor=conncursor()
#建立一个空表
cursorexecute("create table test("+fo[0][0]+" varchar(100),"+fo[0][1]+" varchar(100));")
#利用executemany命令,将LIST,dfun中的数据通过insert语句写入数据库
cursorexecutemany("""insert into test values(%s,%s);""" ,dfun)
#确认数据 *** 作,注意如果没有conncommit()这个命令,数据无法被插入到数据库中
conncommit()
#执行查询检查结果
count = cursorexecute('select from test')
print 'has %s record' % count
#重置游标位置
cursorscroll(0,mode='absolute')
#搜取所有结果
results = cursorfetchall()
#测试代码,print results
#获取MYSQL里的数据字段
fields = cursordescription
#将字段写入到EXCEL新表的第一行
sh2=xlbookWorksheets('sheet3')
#清空sheet3
sh2CellsClear
for ifs in range(1,len(fields)+1):
sh2Cells(1,ifs)Value=fields[ifs-1][0]
#将读取的数据填入到相应的行列中
ics=2
jcs=1
for ics in range(2,len(results)+2):
for jcs in range(1,len(fields)+1):
sh2Cells(ics,jcs)Value=results[ics-2][jcs-1]
#关闭EXCEL程序
xlApplicationQuit()
#关闭游标和查询链接
cursorclose()
connclose()
看来阁下对oracle很不熟悉,本人精通IBM DB2,oracle(写过3年多package for IFS ERP,做过oracle业务管理员,自写过RowID online backup 系统),MSSQL管理和编程序,对oracle管理备份有相当了解,熟悉各种unix系统,深入了解系统安全漏洞,IT网络,硬件,软件,ERP无所不精(就是什么都不精)(其实全是吹的用来,都是懂一点)再吹就把楼主刮上天了,建立DBlink很简单,这些都小儿科,小case附送他人的文章一篇, 由于历史的原因,在多数企业都同时存在多个数据库平台,在每个数据库平台上都运行着相关的一套或多套应用。随着单位业务不断扩大,如何在不影响现有应用运行的前提下,快速有效地整合这些分布在单位内部不同数据库平台上的数据,是一个困扰CIO们的问题。面对这一问题,现有解决方案大致可分为以下两种:1.在应用程序上建立连接不同数据源的数据连接,这样做要求程序员分清哪个连接是对应哪个数据库的,而且如果设计时涉及到存储过程还要按照不同数据库的要求分别编写,加重了程序员的要求。2.在数据库中设立快照,定时把其他数据源的数据复制到本地数据库,这样虽然解决了前一种方法中不同数据源的问题,但是由于是定时复制,数据不能实时同步,在实时性要求高的应用中这种方法便不能使用。由于上述两种方法都存在一定的缺点,这里介绍一种Oracle提供的解决oracle数据库与异种数据源的连接问题的解决方案—Oracle的异构服务(Heterogeneous Services)。异构服务“异构服务”是集成在Oracle 8i数据库软件中的功能,它提供了从Oracle数据库访问其他非Oracle数据库的通用技术。熟悉Oracle的读者都很清楚,Oracle提供通过建立DB Link的方法访问非本地数据库,而“异构服务”提供通过建立DB Link使你能够执行Oracle SQL查询,透明地访问其他非Oracle数据库里的数据,就像访问Oracle远程数据库一样。“异构服务”分为两种:1. 事务处理服务(Transation Service):通过事务处理服务,使用户在访问非Oracle数据库中支持事务处理功能。2. SQL服务: 通过SQL服务,使用户直接在Oracle数据库中执行对非Oracle数据库的各种SQL语句。根据异构服务代理程序的不同,“异构服务”连接方式可以分为透明网关和通用连接两种。透明网关(Transparent Gateways) 透明网关使用Oracle提供的特定网关程序来设置代理,例如连接SQL Server则必须要有SQL Transparent Gateway for SQL Server。通用连接(Generic Connectivity) 通用连接又分为ODBC连接和OLE DB连接两种,其连接方法和透明网关没有本质区别,只不过通用连接是和数据库一起提供的功能,你不需要向Oracle购买相关的透明网关程序。连接实例这个实例的应用环境是Oracle 817, *** 作系统Windows 2000 Server英文版,采用通用连接的ODBC for SQL Server连接SQL Server 2000中文版。安装步骤如下:1. 安装HS部件。缺省情况下,HS服务是和Oracle 817一起安装的,你可以查询SYS用户下是否存在HS_BASE_CAPS视图,以确认HS部件是否安装,如果没有可以用相关的安装盘进行安装。2. 配置ODBC系统连接字。在控制面板选择“Data Sources (ODBC)”,在“系统DNS”内配置ODBC for SQL Server连接字(dnsora2sql)。3.配置tnsnamesora,它位于ORACLE_HOME\NETWORK\ADMIN。在这个文件中增加如下代码:Lnk2sql =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = HOSTNAME)(PORT = 1521)))(CONNECT_DATA =(SID = hs4sql) | select from region@ora2sql;到此我们已经完成了使用ODBC连接SQL SERVER的配置工作。总体上说,异构服务扩展了Oracle数据库连接异种数据源的能力,加强了企业数据的整合,是一个快速有效经济地整合企业内部异构数据的解决方案。
以上就是关于mac如何通过python将大批excel数据导入mysql全部的内容,包括:mac如何通过python将大批excel数据导入mysql、在ABAP中如何使用native sql连接外部数据库、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)