Excel 批量导入Mysql(创建表-追加数据)

之前弄数据库的时候, 测试excel导mysql, 中间用pandas 处理后再入库.  直接上代码, 此种有真意, 尽在不言中.

复制代码
 1 #!/usr/bin/env python
 2 # coding: utf-8
 3 # author: chenjie131@ke.com
 4 
 5 '''
 6 应用场景:
 7     将excel等存储的数据导入到 Mysql, 适用于追加表, 或者追加数据.
 8 
 9     1. 数据库表已存在, 可在需表后面添加数据.
10     2. 数据库表不存在, 导入时直接创建表在数据库中.
11     3. 特点:
12         3.1 这里用pandas.to_sql()方法, 以块的方式导入效率高, 10000行100列的表,2.5s 导完.
13         3.2 替代品,sql方式可参考load data local ....
14         3.3 缺点是如果表存在, 且设置主键约束, 就不适用
15 
16 
17 '''
18 
19 import pandas as pd
20 from sqlalchemy import create_engine
21 
22 
23 文件路径 = "C:\\Users\beike\\Desktop\\8月带看明细8.15.xls"
24 
25 # 1. 读取excel, sheet_name: 默认读取Sheet1,按需指定
26 table = pd.read_excel(文件路径, sheet_name="明细")
27 
28 
29 # 2. 连接MySql数据库, //后的参数为: 用户名, 密码, 主机, 数据库名
30 engine = create_engine("mysql+pymysql://zmj:123456@192.168.6.81:3306/new_house")
31 
32 # 3. 连接测试
33 try:
34     pd.read_sql("show tables;", con=engine); print("connect successfully!")
35 except Exception as error:
36     print("connect fail! because of :", error)
37 
38 # 4. to_sql()方法插入数据, 更多细节自行查文档
39 
40     # 参数1: 表的名字,建议不要用中文
41     # con: 之前创建的连接对象
42     # if_exists:
43                 # "replace": 如果传入的表名在库里存在, 则会删掉该表, 重新创建
44                 # "append":  如果传入的表名在库里存在, 则会追加数据, 注意字段顺序一致, 注意当有主键约束则易报错
45 try:
46     table.to_sql("测试表", con=engine, index=False, if_exists="replace");
47 
48     print("insert successfully!")
49 except Exception as error: print("insert fail! because of:", error)
50 
51 
52 print("##"*20)
53 print("done!")
复制代码

 

posted @   致于数据科学家的小陈  阅读(4056)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示