果砸的博客

果砸的博客

使用MySQL数据库处理文件数据

2024-03-01

简介

当你的内存不足以一次性将大文件加载到内存中时,可以考虑使用数据库来处理数据。在这里,我将向你展示如何使用MySQL数据库来处理一个17GB的文件,其中每一行都是以“QQ号码—-电话号码”一一对应的形式。我们将把这些数据导入到MySQL数据库中,并可以直接在数据库中通过QQ号码来检索电话号码。

步骤1:安装MySQL数据库和Python库

  1. 安装MySQL数据库:前往MySQL官方网站(https://dev.mysql.com/downloads/installer/)下载并安装适合你操作系统的MySQL数据库。

  2. 安装mysql-connector-python库:使用以下命令在Python中安装mysql-connector-python库。

   pip install mysql-connector-python

步骤2:创建MySQL数据库和表

在MySQL数据库中创建一个数据库和用于存储QQ号码和电话号码的表。

-- 连接到MySQL数据库(在命令行或任何MySQL客户端中执行)
mysql -u your_username -p

-- 创建一个新的数据库
CREATE DATABASE qq_phone_db;

-- 选择创建的数据库
USE qq_phone_db;

-- 创建存储数据的表
CREATE TABLE qq_phone (
  qq VARCHAR(20) PRIMARY KEY,
  phone VARCHAR(20)
);

步骤3:Python代码

现在,我们将连接到MySQL数据库并将数据导入到表中。

import mysql.connector

def insert_data_to_mysql(file_path):
    try:
        # 连接到MySQL数据库
        conn = mysql.connector.connect(
            host='your_mysql_host',  # 比如:'localhost',可以是IP地址或域名
            user='your_mysql_username',  # 数据库用户名
            password='your_mysql_password',  # 数据库密码
            database='qq_phone_db'  # 数据库名称
        )
        cursor = conn.cursor()

        # 创建一个表来存储数据(如果之前没有创建)
        create_table_query = '''CREATE TABLE IF NOT EXISTS qq_phone (
                                  qq VARCHAR(20) PRIMARY KEY,
                                  phone VARCHAR(20)
                                );'''
        cursor.execute(create_table_query)

        # 读取文件并将数据插入数据库
        with open(file_path, 'r', encoding='utf-8') as file:
            for line in file:
                qq, phone = line.strip().split('----')
                insert_query = '''INSERT INTO qq_phone (qq, phone) VALUES (%s, %s)'''
                data = (qq, phone)
                cursor.execute(insert_query, data)

        # 提交更改并关闭数据库连接
        conn.commit()
        conn.close()

        print("Data inserted successfully into MySQL database.")
    except Exception as e:
        print(f"Error: {e}")

# 示例使用
file_path = 'your_file.txt'
insert_data_to_mysql(file_path)

现在,你的数据已经成功导入到MySQL数据库中的qq_phone表中。你可以使用SQL查询来检索电话号码,也可以使用类似的方式将数据查询出来。请确保在your_mysql_hostyour_mysql_usernameyour_mysql_password中填入正确的值,以便正确连接到MySQL数据库。