Mysql快速插入千万条数据的实战教程

Mysql快速插入千万条数据的实战教程

在实际开发过程中,经常需要批量插入大量数据,如何高效地插入千万条数据是一个非常实用的技能。在本文中,我们将探讨如何使用Mysql进行快速批量插入千万条数据。

1. 准备工作

  1. 创建数据库及数据表;
  2. 准备好要插入的数据,以CSV文件形式存在;

2. 导入CSV文件

使用LOAD DATA INFILE语句将CSV文件导入到Mysql数据库中。

示例1:导入单个CSV文件 data.csv 到数据表 table1 中。

LOAD DATA INFILE 'data.csv' 
INTO TABLE table1 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n';

示例2:批量导入多个CSV文件到多个数据表中,使用shell脚本实现(以Linux系统为例)。

#!/bin/bash
for file in /path/to/csv/files/*.csv
do
    table_name=$(basename "$file" .csv)
    mysql -uUSERNAME -pPASSWORD -DDBNAME -e "LOAD DATA INFILE '$file' INTO TABLE $table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';"
done

3. 分批次插入数据

当要插入的数据量非常大时,考虑将数据按照一定的批次进行插入。

示例3:使用Python脚本实现将千万条数据分批次插入到数据表 table2 中。

import csv
import pymysql

batch_size = 5000

def connect_mysql():
    conn = pymysql.connect(
        host='localhost',
        port=3306,
        user='USERNAME',
        password='PASSWORD',
        db='DBNAME',
        charset='utf8mb4',
        cursorclass=pymysql.cursors.DictCursor
    )
    return conn

def insert_data(batch_data):
    conn = connect_mysql()
    cursor = conn.cursor()
    try:
        sql = "INSERT INTO table2 (column1, column2, column3) VALUES (%s, %s, %s)"
        cursor.executemany(sql, batch_data)
        conn.commit()
    except Exception as e:
        conn.rollback()
        print(e)
    finally:
        cursor.close()
        conn.close()

def main():
    with open('data.csv', 'r', encoding='utf-8') as f:
        reader = csv.reader(f)
        headers = next(reader)
        batch_data = []
        for row in reader:
            batch_data.append((row[0], row[1], row[2]))
            if len(batch_data) == batch_size:
                insert_data(batch_data)
                batch_data = []
        if batch_data:
            insert_data(batch_data)

if __name__ == '__main__':
    main()

以上就是如何使用Mysql快速插入千万条数据的实战教程,希望对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mysql快速插入千万条数据的实战教程 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • MySQL8.0.26安装与卸载的完整步骤记录

    MySQL8.0.26安装与卸载的完整步骤记录 安装MySQL8.0.26 下载MySQL8.0.26的安装包: 可以在官方网站上下载MySQL8.0.26版本的安装包,下载地址为:https://dev.mysql.com/downloads/mysql/。 安装MySQL8.0.26: 双击安装包,按照提示一步一步完成安装。在安装过程中,需要设置root…

    MySQL 2023年5月19日
    00
  • MySQL存储引擎有哪些?

    MySQL存储引擎是用于处理和管理MySQL数据库中数据存储和检索的关键组件。MySQL支持多个存储引擎,不同的引擎有不同的特点和适用场景。以下是MySQL支持的主要存储引擎: InnoDB引擎 InnoDB是当前MySQL默认的事务性存储引擎。它支持事务和外键约束等高级特性,能够提供ACID事务支持和高可靠性,适合处理事务性复杂的业务应用。InnoDB还支…

    MySQL 2023年3月9日
    00
  • 小白的springboot之路(三)、集成mybatis与MySQL

    0、前言   mybatis属于半自动的ORM,相比hibernate这种全自动的ORM,兼顾了性能与易用;目前企业项目中,基本都是mybatis的天下;今天就来整合mybatis与MySQL; 1、整合   1.-1、添加依赖: <!– 集成mybatis –> <dependency> <groupId>org.m…

    MySQL 2023年4月13日
    00
  • MySQL触发器到底是什么?

    MySQL触发器是一种特殊的存储过程,它会自动执行SQL语句,当满足特定的条件时。通常情况下,MySQL触发器都是与数据库表结合使用,用于监控和响应数据表的更改事件。 MySQL触发器可以在以下三个事件发生时触发: 当插入新行时,称为INSERT触发器。 当更新行时,称为UPDATE触发器。 当删除行时,称为DELETE触发器。 以下是一个MySQL触发器的…

    MySQL 2023年3月10日
    00
  • MySQL重置root密码提示”Unknown column ‘password”的解决方法

    MySQL重置root密码时出现”Unknown column ‘password’错误一般是因为版本升级或者重新安装MySQL服务后出现的问题。下面是具体的解决方法: 重置MySQL的root密码 停止MySQL服务 在终端运行以下命令停止MySQL服务: sudo service mysql stop 以跳过授权表的方式启动MySQL 在终端运行以下命令…

    MySQL 2023年5月18日
    00
  • MySQL5.6解压版服务无法启动之系统错误1067问题

    问题描述: 当尝试启动MySQL5.6解压版时,可能会遇到系统错误1067,导致MySQL服务无法启动的问题。 解决步骤: 步骤1:查看错误日志 首先需要查看MySQL的错误日志,以便确定具体的错误信息。在MySQL安装目录下找到data文件夹,在其中查找包含错误信息的错误日志文件。 通常,错误日志文件名为hostname.err,其中hostname是你的…

    MySQL 2023年5月18日
    00
  • 快速解决mysql深分页问题

    下面是“快速解决mysql深分页问题”的完整攻略。 1. 什么是深分页问题 深分页问题是指在查询mysql数据时,需要跨越非常大的范围进行分页查询,导致查询时间过长或者系统崩溃的情况。比如一个很大的数据表有1000000条记录,每页显示10条记录,当我们需要查询第900000到第900010条记录时,就需要检索整张表中的数据,如果数据量很大,就会导致查询速度…

    MySQL 2023年5月19日
    00
  • mysql:Can’t start server: can’t create PID file: No space left on device

    当在启动MySQL服务器时,可能会遇到错误消息“Can’t start server: can’t create PID file: No space left on device”。该错误消息表示MySQL试图创建一个PID文件,但由于磁盘空间不足,无法完成该操作。我们可以采取以下几步来解决这个问题: 检查磁盘空间 在终端输入以下命令:df -h。这将显示…

    MySQL 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部