You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python导入Yahoo Finance股票CSV至MySQL时遇1292日期错误

解决MySQL导入Yahoo Finance CSV时的Date格式错误问题

嘿,我帮你分析下这个问题——你遇到的InternalError: (1292, "incorrect date value: 'Date' for column 'date' at row 1")错误,本质原因很简单:你下载的CSV文件第一行是表头(也就是列名,比如Date、Open这些),但你的Python代码把这一行也当成了普通数据行去插入数据库。MySQL的date列只认合法的日期格式(比如YYYY-MM-DD),自然没法解析字符串Date,所以直接报错了。

下面给你两种实用的解决方案,按需选就行:

方案一:用原生csv模块跳过表头行

如果你的代码是用csv模块读取数据的,只需要在循环插入前先跳过第一行表头就行。举个修改后的示例:

import csv
import mysql.connector
from datetime import datetime

# 建立数据库连接
db = mysql.connector.connect(
    host="你的数据库地址",
    user="你的用户名",
    password="你的密码",
    database="stocks"
)
cursor = db.cursor()

with open('你的股票数据.csv', 'r') as f:
    reader = csv.reader(f)
    # 关键一步:跳过CSV的表头行
    next(reader)  
    for row in reader:
        # 额外处理:Yahoo Finance的日期格式通常是MM/DD/YYYY,转成MySQL要求的YYYY-MM-DD
        raw_date = row[0]
        formatted_date = datetime.strptime(raw_date, "%m/%d/%Y").strftime("%Y-%m-%d")
        row[0] = formatted_date
        
        # 执行插入操作
        cursor.execute(
            "INSERT INTO TEST (date, open, high, low, close, adj_close, volume) VALUES (%s, %s, %s, %s, %s, %s, %s)",
            row
        )

# 提交事务并关闭连接
db.commit()
cursor.close()
db.close()

方案二:用pandas批量导入(更适合大量数据)

如果你的数据有几百行,用pandas会更省心——它能自动识别表头,还能一键处理日期格式转换,代码也更简洁:

首先得先安装依赖包:

pip install pandas sqlalchemy mysql-connector-python

然后是导入代码:

import pandas as pd
from sqlalchemy import create_engine

# 创建数据库连接引擎(替换成你的数据库信息)
engine = create_engine('mysql+mysqlconnector://用户名:密码@地址/stocks')

# 读取CSV,自动解析Date列为日期类型
df = pd.read_csv('你的股票数据.csv', parse_dates=['Date'])

# 将数据导入TEST表:if_exists='append'表示追加数据,'replace'会清空原表再导入
df.to_sql('TEST', con=engine, if_exists='append', index=False)

额外注意点

  • 确认你的TEST表的date列确实是DATE类型(不是VARCHAR或其他)
  • 如果Yahoo Finance的日期格式不是MM/DD/YYYY,可以调整strptime里的格式字符串(比如%Y-%m-%d)

内容的提问来源于stack exchange,提问作者Mattytripps

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:15:23