<隨便寫>將數據庫中所有表導出為CSV格式的文件


1.工作中遇到的問題,客戶不懂數據庫,所以他想將鏡像文件中還原數據庫全部導出為CSV文件(EXCEL)

import pymysql
import csv
import os

# 獲取表名
def from_mysql_get_all_tables_name(databases):
    conn = pymysql.connect(
        host=host,
        user=user,
        password=password,
        database=database,
        charset="utf8")
    cursor = conn.cursor()
    sql = 'SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = "{}";'.format(databases)
    cursor.execute(sql.encode('utf-8'))
    data = cursor.fetchall()  # 獲取查詢的所有記錄
    conn.close()
    return data


# 數據
def from_mysql_get_all_info(table_name):
    conn = pymysql.connect(
        host=host,
        user=user,
        password=password,
        database=database,
        charset="utf8")
    cursor = conn.cursor()
    sql = "select * from {}".format(table_name)
    cursor.execute(sql.encode('utf-8'))
    data = cursor.fetchall()  # 獲取查詢的所有記錄
    conn.close()
    return data


def from_mysql_get_all_column_name(databases, table_name):
    conn = pymysql.connect(
        host=host,
        user=user,
        password=password,
        database=database,
        charset="utf8")
    cursor = conn.cursor()
    sql = "select COLUMN_NAME from information_schema.`COLUMNS`  where TABLE_SCHEMA = '{}' and TABLE_NAME = '{}'".format(
        databases, table_name)
    cursor.execute(sql.encode('utf-8'))
    data = cursor.fetchall()  # 獲取查詢的所有記錄
    conn.close()
    return data


# 不加字段行
def write_csv(table_name, column_name, data):
    filename = 'D:/data/{}.csv'.format(table_name)  # 文件名和路徑
    path = 'D:/data'
    if not os.path.exists(path):
        os.mkdir(path)
    with open(filename, mode='w', encoding='utf-8', newline='') as f:
        write = csv.writer(f, dialect='excel')
        for item in data:
            write.writerow(item)


# 加字段行
def column_write_csv(table_name, column_name, data):
    filename = 'D:/data/{}.csv'.format(table_name)  # 文件名和路徑
    path = 'D:/data'
    header = []
    for row in column_name:
        colu = row[0]
        header.append(colu)
    if not os.path.exists(path):
        os.mkdir(path)
    with open(filename, mode='w', encoding='utf-8',newline='') as f:
        write = csv.writer(f, dialect='excel')
        write.writerow(header)
        for item in data:
            write.writerow(item)


def main():
    # 1.獲取該數據庫下所有表名
    tables_name = from_mysql_get_all_tables_name(database)
    for row in tables_name:
        # 表名
        table_name = row[0]
        # print(table_name)
        # 2.獲取該表下的所有字段名
        column_name = from_mysql_get_all_column_name(database, table_name)
        # print(column_name)
        # 3.獲取該表的所有數據
        data = from_mysql_get_all_info(table_name)
        # print(data)
        # 4.將數據寫入CSV
        column_write_csv(table_name, column_name, data)


if __name__ == '__main__':
    # 0.填寫數據庫相關參數
    database = "mysql"
    host = "127.0.0.1"
    user = "root"
    password = "root"
    main()

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM