怎么使用Python离线保存数据库中的数据?并迁移到其他数据库?
文章目录
前言
用Python保存数据库中的表与表的数据,保存为CSV格式(保存为xlsx格式不知道为什么会缺失一些数据)。
保存好之后再启动即可完成:创建表->插入数据。
一、运行环境
- win10
- python==3.7.2
二、需要用到的SQL语句
- 使用该SQL语句可以获取数据库下的所有表名
SELECT table_name FROM information_schema.TABLES WHERE table_schema='数据库名称'
- 输出该表的DDL
SHOW CREATE TABLE 数据库名称.表格名称
- 查询
SELECT * FROM 数据库名称.表格名称
- 插入
INSERT INTO 表格名称(列1,列2,列3) VALUES (值1,值2,值3)
三、保存数据库
1. 获取该数据库下的所有表名称
mySQLCursor.execute(f"SELECT table_name FROM information_schema.TABLES WHERE table_schema='{
databasesName}'")
databasesTablesList = [i[0] for i in mySQLCursor.fetchall()]
2. 获取表的建表语句
createTablesList, createTables = [], []
for tablesName in databasesTablesList:
mySQLCursor.execute(f"SHOW CREATE TABLE {
databasesName}.{
tablesName}")
createTablesList.append(mySQLCursor.fetchall()[0][1])
createTables.append(tablesName)
(pd.DataFrame({
'表格': createTables, '建表语句': createTablesList})).to_csv(
rf'{
saveDataFilePath}\{
databasesName}-建表.csv', index=False, encoding='utf-8')
3. 获取表数据并保存到本地
for tablesName in databasesTablesList:
(pd.read_sql(f"SELECT * FROM {
databasesName}.{
tablesName}", con=mySQL)).to_csv(
rf'{
saveDataFilePath}\{
tablesName}.csv', index=False, encoding='utf-8')