mysql的idx_Python MySQLdb for CSV导入MySQL表的列数超过CSV/list idx超出范围?

使用Python的MySQLdb库将38列CSV导入已有39列的MySQL表时遇到问题。错误包括list index out of range和OperationalError,涉及到CSV的空行和日期列的值。代码尝试跳过前6行,但在执行INSERT时出现问题。
摘要由CSDN通过智能技术生成

我有一个包含38列的CSV文件。我尝试使用Python的MySQLdb库将其插入到MySQL表(已经存在,没有记录)中,该表有39列(第一列是一个唯一的num id,不在CSV中)。

我下面的脚本给了我一个错误。。。在row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[

10], row[11], row[12], row[13], row[14], row[15], row[16], row[17], row[18], row

[19], row[20], row[21], row[22], row[23], row[24], row[25], row[26], row[27], ro

w[28], row[29], row[30], row[31], row[32], row[33], row[34], row[35], row[36], r

ow[37], row[38],)

IndexError: list index out of range

值得注意的是,CSV中的一些列有一个第一个记录(行)是空的,我并没有导入头(字段名)行,因为实际记录从第7行开始。你知道为什么我得到错误而没有数据吗。在

^{pr2}$

更新

我已经更改了我的代码,但是现在我仍然得到一个错误,第一个“date”列出现在MySQL表中,它必须接受一个空白的第一行。我认为,至少对于日期来说,字段的第一行是空的,这会抛出这样一个错误。。。在_mysql_exceptions.OperationalError: (1292, "Incorrect date value: ' ' f

or column 'shortfilename_mdate' at row 1")

这是我的最新代码。。。在import csv

import MySQLdb

csv.register_dialect('pipes', delimiter='|')

mydb = MySQLdb.connect(host='localhost',

user='root',

passwd='****',

db='artefacts')

cursor = mydb.cursor()

dir = "C:\\Users\**\\\Documents\\webapp_1010\\cyber\\"

csv_data = csv.reader(file('$MT_pipe_.csv'), dialect = 'pipes')

for idx, row in enumerate(csv_data):

if idx <= 6:

pass

else:

cursor.execute("INSERT INTO `artefacts`.`nettop_master`\

(`evidence_id`, `entry`, `sequence_nbr`, `parent`, `parent_sequence_nbr`, `SI_mdate`,

`SI_mtime`, `SI_adate`, `SI_atime`, `SI_cdate`, `SI_ctime`, `SI_bdate`, `SI_btime`, `FN_mdate`,

`FN_mtime`, `FN_adate`, `FN_atime`, `FN_cdate`, `FN_ctime`, `FN_bdate`, `FN_btime`, `typeof`,

`extension`, `size`, `name`, `path`, `symbolic_link`, `object_id`, `ads_metadata`,`time_warning`,

`shortfilename_mdate`, `shortfilename_mtime`, `shortfilename_adate`, `shortfilename_atime`,

`shortfilename_cdate`, `shortfilename_ctime`, `shortfilename_bdate`, `shortfilename_btime`,

`extracted_filepath`)\

VALUES (1, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,%s,

%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", row)

#close the connection to the database.

mydb.commit()

cursor.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值