读取excel作为第一列创建数据表,然后将值插入数据表

发布于:2025-04-03 ⋅ 阅读:(11) ⋅ 点赞:(0)
  1. 读取 Excel 文件
  2. 创建一个数据库表,其列名与 Excel 表格的列名相同。
  3. 插入数据,对于每一行,如果数据为 #N/A,插入空值。

下面是一个 Python 示例代码,使用 pandas 读取 Excel 文件,创建数据库表(假设使用 MySQL)并将数据插入数据库。

1. 安装必要的库

pip install pandas mysql-connector-python openpyxl

2. Python 脚本

import pandas as pd
import mysql.connector
from mysql.connector import Error

# 读取 Excel 文件
df = pd.read_excel('path_to_your_excel_file.xlsx', engine='openpyxl')

# 打印数据框架查看数据
print(df.head())

# 创建数据库连接
def create_connection():
    try:
        connection = mysql.connector.connect(
            host='localhost',      # 数据库主机地址
            database='your_database',  # 数据库名称
            user='your_user',      # 数据库用户名
            password='your_password'   # 数据库密码
        )
        return connection
    except Error as e:
        print(f"Error: {e}")
        return None

# 创建表格
def create_table(cursor, table_name, columns):
    create_table_query = f"CREATE TABLE IF NOT EXISTS {table_name} ({', '.join(columns)});"
    cursor.execute(create_table_query)

# 将 Excel 数据插入数据库
def insert_data(cursor, table_name, data):
    # 生成 SQL 插入语句
    placeholders = ', '.join(['%s'] * len(data))
    insert_query = f"INSERT INTO {table_name} VALUES ({placeholders})"
    cursor.execute(insert_query, data)

def main():
    # 连接到数据库
    connection = create_connection()
    if connection is None:
        return

    cursor = connection.cursor()

    # 目标表名(根据 Excel 中的第一列来命名)
    table_name = 'steel_scrap_arrival'  # 可以根据需求调整
    columns = [f"`{col}` VARCHAR(255)" for col in df.columns]  # 创建列名并设置为 VARCHAR 类型
    create_table(cursor, table_name, columns)

    # 插入数据
    for row in df.itertuples(index=False, name=None):  # 遍历每行
        data = [(None if x == '#N/A' else x) for x in row]  # 替换 '#N/A' 为 None(空值)
        insert_data(cursor, table_name, data)
    
    # 提交事务
    connection.commit()
    print("Data inserted successfully.")

    # 关闭连接
    cursor.close()
    connection.close()

if __name__ == "__main__":
    main()


3. 解释

  1. 读取 Excel 文件:使用 pandas 读取 Excel 文件,默认使用 openpyxl 引擎(适用于 .xlsx 格式)。
  2. 创建数据库连接:使用 mysql.connector 连接到 MySQL 数据库。
  3. 创建表:从 Excel 文件的列名生成 CREATE TABLE 查询。如果列名包含空格或特殊字符,使用反引号(`)包裹。
  4. 数据插入:遍历 Excel 表格的每一行,对于每个 #N/A,替换为 None(数据库中的空值)。然后生成 INSERT 查询将数据插入到表中。
  5. 数据库提交:使用 commit() 提交数据,确保数据被写入数据库。

4. 数据库设置

确保你在数据库中已经创建了一个名为 your_database 的数据库,并且 your_useryour_password 是有效的数据库凭据。

5. 更改必要的字段

  • 路径:将 'path_to_your_excel_file.xlsx' 替换为你实际 Excel 文件的路径。
  • 数据库信息:修改数据库连接参数(host, database, user, password)以适应你的环境。

6. 执行脚本

将该 Python 脚本保存并运行,它将自动创建数据库表并插入数据。