CSV到MySQL上传问题

13 浏览
0 Comments

CSV到MySQL上传问题

我已经根据这段代码(附在下面以节省点击时间)进行了适应,以使其适用于我的需求。我有两个问题。

1)如何让上传程序跳过表头行?当前它会上传CSV文件的第一行,而第一行只是定义了列名。所以在我的数据库中会出现这样的条目:"First Name, Last Name, Email"。

2)有两列的列名是"First Name"和"Last Name",但是空格会导致错误,提示我的SQL语法有问题,请查看我使用的版本的手册。在自己尝试之后,我发现如果将空格替换为下划线,则可以正常工作。所以新的列名变成了"First_Name"和"Last_Name"。有没有一种方法可以避免错误,同时不使用下划线?

import csv
import MySQLdb
mydb = MySQLdb.connect(host='服务器IP',
    user='数据库用户名',
    passwd='数据库用户密码',
    db='数据库名称')
cursor = mydb.cursor()
csv_data = csv.reader(file('test.csv'))
for row in csv_data:
    cursor.execute('INSERT INTO testcsv(First_Name, \
          Last_Name,email )' \
          'VALUES("%s","%s","%s")', 
          row)
# 关闭与数据库的连接。
mydb.commit()
cursor.close()
print "完成"

0
0 Comments

CSV to MySQL Upload Questions

在将CSV文件上传到MySQL数据库时,有几个问题需要解决。首先,我们需要跳过CSV文件的第一行,因为通常第一行是列名。我们可以使用以下代码来实现跳过第一行:

next(csv_data, None)    
for row in csv_data:
    # 上传数据到MySQL数据库

其次,MySQL不支持带有空格的列名,因此我们需要使用下划线来替代空格。这样虽然列名在数据库中以下划线表示,但是在显示给用户时仍然可以显示为带有空格的形式。

然后,某些情况下尝试在代码中添加[1:]部分来跳过第一行,但是却遇到了错误信息"TypeError: 'csv.reader' object has no attribute '_getitem'"。这是因为这种写法是错误的。

最后,更新了解决方法。实际上,可以使用next函数来跳过单独的一行,而不是通过[1:]来跳过。这样就可以解决跳过第一行的问题。

通过以上方法,我们可以有效地将CSV文件上传到MySQL数据库中。

0