乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > <em>python</em>中,怎么将大量数据一次性导入数据库中 补充:数...-python

<em>python</em>中,怎么将大量数据一次性导入数据库中 补充:数...-python

作者:乔山办公网日期:

返回目录:excel表格制作


1.将选中的数据快儿拷贝到一个TXT文本文件中(记得把后面的空格消掉。。否则导入数据库后会有对应的空行),假如存到“D:\data.txt”这个位置里。
2.根据要导入的数据快儿建立MySql数据库和表,然后进入命令提示符里使用命令
load data local infile 'D:/data.txt' into table exceltomysql fields terminated by '\t';
注意:盘符我使用的“/”才成功,否则提示找不到文件 下面文章中是用的“\”!
进行导入操作
手动进行Excel数据和MySql数据转换

我估计你是问怎么从文件导入到数据库。一般每个数据库都有一个从文件直接load数据到数据库的命令或者工具。
比如SQLServer 有个bcp。 MySql 就是 load。

给你搜了详细的帮助。看看链接吧。以下是精简的使用方法:
基本用法:
mysql> USE db1;
mysql> LOAD DATA INFILE "./data.txt" INTO TABLE db2.my_table;

指定行,字段的分隔符:
mysql> LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name

FIELDS TERMINATED BY ',' ENCLOSED BY '"'

LINES TERMINATED BY '\n';
我知道的有三种方法:
1、如果数据量不大且没有大对象(图片,文件什么的)且使用pl/sql developer做oracle管理工具的话,可以直接复制粘贴,操作方法是先按照列的先后顺序把EXCEL中数据排好,在第一个字段前面加一空白列(这部很重要,否则字段就会不对应了),pl/sql developer中执行下select * from 表名 for update,使得你的表可以编辑,然后点一下像锁一样的那个图标(鼠标放上去会显示编辑数据四个字),复制excel中的数据(包括空白列),最后直接在表中空白行的地方粘贴就行了,操作很简单。
2、使用外部程序编程实现,如c#,java,以c#为例,先将excel解析成datatable,然后逐行遍历入库即可。
3、使用工具XlsToOra.exe,只要配置一下登陆进去后,设置一下导入的表名,列与excel中列的对应关系就可以导入了。
4、可以将excel转换成csv文件再利用文本导入器(工具-文本导入器)导入即可。
以上是个人使用过的一些方法, 难免有不完美之处,欢迎指正探讨^_^

通过python将大批excel数据导入mysql:

利用Python从EXCEL中读取两列数据存储在LIST中然后连接数据库利用insert语句和LIST 内容结合,导入数据库;然后再从7a64e59b9ee7ad94364数据库读取表的字段和内容,存放到EXCEL新表中即可。

以下的导入的核心代码:

#按照说明安装即可
import win32com.client as win32
import MySQLdb
app='Excel'
#启动EXCEL程序
xl=win32.gencache.EnsureDispatch('%s.Application' % app)
#打开相应的EXCEL文件
xlbook=win32.Dispatch('Excel.Application').Workbooks.Open('D:\\pyd\\opsdata.xls')
#读取EXCEL工具表,打开要导入数据的表
sh=xlbook.Worksheets('sheet2')
#建立一个空LIST和两个循环参数
dfun=[]
jcount=2
ncount=1
#从第一列开始向下循环,找到为空的那一行返回行数,即为第ncount行为空
for ncount in range(1,65566):
    if sh.Cells(ncount,1).Value==None:
        break
    else:
        continue
#print ncount,测试代码,测试ncount值
#EXCEL的数据安排为第一行是字段,第二行开始是数据,故从第2行开始循环,将两列数据合并到一个LIST中
#LIST结构为[('a','b'),('c','d')]
for jcount in range(2,ncount):
    dfun.append((sh.Cells(jcount,1).Value,sh.Cells(jcount,2).Value))
#关闭EXCEL程序
#xl.Application.Quit()
#print dfun,测试代码测试dfun的数据
#建立一个空LIST fo用来存放字段,读取EXCEL中第一行的字段存储到fo中
fo=[]
icount=1
for icount in range(1,2):
    fo.append((sh.Cells(1,icount).Value,sh.Cells(1,icount+1).Value))
#测试代码,print fo
#打开MYSQL链接
conn=MySQLdb.connect(host='localhost',user='root',passwd='0.789asd',db='python')
#获取游标操作
cursor=conn.cursor()
#建立一个空表
cursor.execute("create table test("+fo[0][0]+" varchar(100),"+fo[0][1]+" varchar(100));")
#利用executemany命令,将LIST,dfun中的数据通过insert语句写入数据库
cursor.executemany("""insert into test values(%s,%s);""" ,dfun)
#确认数据操作,注意如果没有conn.commit()这个命令,数据无法被插入到数据库中
conn.commit()


#执行查询检查结果
count = cursor.execute('select * from test') 
print 'has %s record' % count
#重置游标位置
cursor.scroll(0,mode='absolute')
#搜取所有结果
results = cursor.fetchall() 
#测试代码,print results
#获取MYSQL里的数据字段
fields = cursor.description
#将字段写入到EXCEL新表的第一行
sh2=xlbook.Worksheets('sheet3')
#清空sheet3
sh2.Cells.Clear
for ifs in range(1,len(fields)+1):
    sh2.Cells(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):
        sh2.Cells(ics,jcs).Value=results[ics-2][jcs-1]

#关闭EXCEL程序
xl.Application.Quit()
#关闭游标和查询链接
cursor.close()
conn.close()

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网