利用Excel导入数据库的几种实现方式
Ⅰ 直接使用navicat导入
tips:要导入的excel中的字段与数据库表中的字段对应好
选中数据表后,点击导入向导
选择数据源
一路next,然后出现这一步,比对导入字段是否一致
然后再一路next,即可导入数据。
Ⅱ 利用python导入
首先把要导入的excel数据表放到和py文件相同的目录
然后根据下面的代码修改自己的数据库配置和参数即可
import xlrd
import pymysql
class Add_Excel_Data_To_MySQL(object):
"""
Excel表格数据批量导入到MySQL库
"""
# pymysql连接
def conn_pymysql(self, host, dbuser, dbpassword, dbname):
# 连接MySQL
self.conn = pymysql.connect(host=host, user=dbuser, dbpassword=dbpassword, db=dbname)
# 获得游标对象, 用于逐行遍历数据库数据
self.cursor = self.conn.cursor()
def excel_path(self, file_path, excel_table_name):
self.excel = xlrd.open_workbook(file_path)
self.sheet_name = self.excel.sheet_by_name(excel_table_name)
# 循环Excel表格数据,并且写入到MySQL
def for_excel_insert_mysql(self, db01, db02, db03):
# 插入到MySQL
self.query = "INSERT INTO geo ({}, {}, {}) VALUES (%s, %s, %s)".format(db01,db02,db03)
# 创建一个for循环迭代读取xls文件每行数据的;
# 从第二行开始导入;
# 如果没有标题,则1改成0
for r in range(1, self.sheet_name.nrows):
# 导入7列Excel数据(从第一列开始导入);
# 如果导入的列增加或者减少,请根据实情;
excel_01 = self.sheet_name.cell(r, 0).value,
excel_02 = self.sheet_name.cell(r, 1).value,
excel_03 = self.sheet_name.cell(r, 2).value,
self.values = (excel_01, excel_02, excel_03)
# 执行sql语句
self.cursor.execute(self.query, self.values)
# 提交
self.conn.commit()
# 关闭游标
self.cursor.close()
# 关闭数据库连接
self.conn.close()
self.columns = str(self.sheet_name.ncols)
self.rows = str(self.sheet_name.nrows)
print("一共导入了{}列, {}行数据!".format(self.columns, self.rows))
if __name__ == '__main__':
a = Add_Excel_Data_To_MySQL()
# 连接MySQL
a.conn_pymysql(host="localhost",dbuser="root",dbpassword="123456",dbname="test")
# Excel文件路径
a.excel_path("D:\Work-2021\py\geo.xlsx", "test")
# Excel数据插入MySQL
a.for_excel_insert_mysql(
db01="xxx",
db02="xxx",
db03="xxx"
)
Ⅲ 通过Excel直接生成insert语句
首先,选中Excel表格中的含有数据最后一列的下一列的第一格后,输入以下代码:
=CONCATENATE("insert into geo(gero_name,shi,quxian,address,shi_id,quxian_id) values('",A1,"','",B1,"','",C1,"','",D1,"','",E1,"','",F1,"');")
确定写好后,直接拖到最后一行,生成所有insert语句,然后将这一部分insert语句复制出来,navicat导入即可。