mysql数据库中多张表导出成excel方式

需求:
用于将mysql数据库中的几百张表导出成excel方式
表中有些字段的值是含有双引号和逗号值,比如json值
表中有些字段是汉字内容
导出的excel要求有表的列名
shell对于含有逗号和双引号的值会错乱分割
数据库中某些字段值是化学符号

import pymysql,os,csv,shutil
target_dir=r'C:\Users\XXX\Desktop\excel'
if  os.path.exists(target_dir):
	shutil.rmtree(target_dir)
	os.mkdir(target_dir)
else:
	os.mkdir(target_dir)

myconn=pymysql.connect(host='localhost',port=3306,user='root',password='123456',database='rhtx')
table_sql="select table_name from information_schema.tables where table_schema='rhtx'"
with myconn.cursor() as cursor:
	cursor.execute(table_sql)
	table_name=list(cursor.fetchall())

for name in table_name:
	file_name=name[0]+".csv"
	file_path = os.path.join(target_dir, file_name)
	sql='select * from '+'rhtx.'+name[0]
	with myconn.cursor() as cursor:
		cursor.execute(sql)
		rows=cursor.fetchall()
		with open(file_path, mode='w', newline='',encoding='gbk') as file:
			writer=csv.writer(file)
			writer.writerow([i[0] for i in cursor.description])
			writer.writerows(rows)
myconn.close()
### 使用 Navicat 导出 MySQL 数据库文件 #### 准备工作 为了导出 MySQL 数据库文件,确保已经安装并配置好 Navicat 客户端,并能够正常连接至目标 MySQL 数据库。 #### SQL 查询获取结构信息 通过执行特定的 SQL 语句来收集所需的信息。对于名为 `dev_test` 的数据库,可以运行如下命令以提取其所有格及其字段详情: ```sql SELECT TABLE_NAME AS 名, COLUMN_NAME AS 字段名称, COLUMN_TYPE AS 字段类型, CHARACTER_MAXIMUM_LENGTH AS 字段长度, IS_NULLABLE AS 是否必填, COLUMN_DEFAULT AS 默认值, COLUMN_COMMENT AS 备注 FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = 'dev_test'; ``` 此查询会返回关于指定数据库内各张的具体定义[^1]。 #### 将数据保存为 Excel 文件 完上述操作之后,在 Navicat 中可以选择将这些结果另存为 Excel (.xls 或 .xlsx) 格式的文档以便于进一步处理或归档用途。具体步骤通常涉及右键点击查询窗口中的结果集,选择相应的“导出”选项,并按照提示设置文件路径和其他参数。 另外,如果想要查找某个特定列所属的,则可利用下面这条指令来进行检索: ```sql SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.`COLUMNS` WHERE COLUMN_NAME = 'column_name'; ``` 这有助于快速定位给定列所处的位置[^2]。 #### 实际应用案例 假设现在有一个需求是要把整个项目的历史版本控制系统的元数据迁移到新的存储环境中去;此时就可以借助以上方法先整理出完整的数据字典作为迁移工作的基础资料之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值