咕噜咕噜502 2023-05-23 16:29 采纳率: 56.6%
浏览 24
已结题

mysql中怎么将excel中的数据通过sql新增到多张不同的表中?

img


比如这里的数据,机构名称是一张表,网点是一张表,姓名到地区这些列段是一张表,所属辖区是一张表,总共4张表,需求是怎么将excel中的数据取出来并且将这些列段的数据新增到对应的表中?

  • 写回答

2条回答 默认 最新

  • 码上团建 2023-05-23 16:43
    关注

    您可以通过以下步骤将 Excel 中的数据插入到 MySQL 数据库中的多张表中:

    1. 将 Excel 中的数据导出为 CSV 格式,以便后续导入 MySQL 数据库。在 Excel 中选择“另存为”选项,然后选择“CSV 格式”。

    2. 在 MySQL 数据库中创建对应的表,例如:

    -- 机构表
    CREATE TABLE IF NOT EXISTS orgnization (
        id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
        name VARCHAR(255) NOT NULL
    );
    
    -- 网点表
    CREATE TABLE IF NOT EXISTS outlet (
        id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
        name VARCHAR(255) NOT NULL
    );
    
    -- 用户表
    CREATE TABLE IF NOT EXISTS user (
        id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
        name VARCHAR(255) NOT NULL,
        id_card VARCHAR(255) NOT NULL,
        tel VARCHAR(255) NOT NULL,
        card_time VARCHAR(255) NOT NULL,
        flag VARCHAR(255) NOT NULL,
        status VARCHAR(255) NOT NULL,
        card_num VARCHAR(255) NOT NULL,
        addr VARCHAR(255) NOT NULL,
        area VARCHAR(255) NOT NULL,
        org_id INT NOT NULL,
        outlet_id INT NOT NULL,
        FOREIGN KEY (org_id) REFERENCES orgnization(id),
        FOREIGN KEY (outlet_id) REFERENCES outlet(id)
    );
    
    -- 所属辖区表
    CREATE TABLE IF NOT EXISTS area (
        id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
        name VARCHAR(255) NOT NULL
    );
    
    1. 使用 Python 编写脚本,导入 CSV 数据到 MySQL 数据库中的多个表。以下示例代码演示了如何实现这一步骤:
    import mysql.connector
    import csv
    
    def import_data(file_path):
        # 连接 MySQL 数据库
        cnx = mysql.connector.connect(user='your_user', password='your_password',
                                      host='your_host', database='your_database')
        cursor = cnx.cursor()
    
        # 打开 CSV 文件
        with open(file_path, newline='', encoding='utf-8-sig') as csvfile:
            reader = csv.DictReader(csvfile)
    
            # 逐行读取 CSV 数据,并插入到对应的表中
            for row in reader:
                # 插入机构表
                org_name = row['机构名称']
                cursor.execute("INSERT INTO orgnization (name) VALUES (%s)", (org_name,))
                org_id = cursor.lastrowid
    
                # 插入网点表
                outlet_name = row['网点']
                cursor.execute("INSERT INTO outlet (name) VALUES (%s)", (outlet_name,))
                outlet_id = cursor.lastrowid
    
                # 插入用户表
                user_name = row['姓名']
                id_card = row['身份证']
                tel = row['联系电话']
                card_time = row['办卡时间']
                flag = row['标识']
                status = row['状态']
                card_num = row['卡号']
                addr = row['地区']
                area = row['所属辖区']
                cursor.execute("INSERT INTO user (name, id_card, tel, card_time, flag, status, card_num, addr, area, org_id, outlet_id) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
                               (user_name, id_card, tel, card_time, flag, status, card_num, addr, area, org_id, outlet_id))
    
                # 插入所属辖区表
                cursor.execute("INSERT INTO area (name) VALUES (%s)", (area,))
    
        # 提交更改并关闭连接
        cnx.commit()
        cursor.close()
        cnx.close()
    
    1. 在脚本中调用 import_data() 函数并将 CSV 文件的路径作为参数传递。例如:
    file_path = 'path/to/your/csv/file.csv'
    import_data(file_path)
    

    这样就可以将 Excel 中的数据插入到 MySQL 数据库中的多张表中了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月25日
  • 已采纳回答 5月25日
  • 创建了问题 5月23日

悬赏问题

  • ¥15 单纯型python实现编译报错
  • ¥15 c++2013读写oracle
  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音