如何从CSV文件中使用Python在MySQL中创建列名称?
我通常使用大型CSV数据集。打开这些文件要花很多时间。我的计划是在不访问csv文件的情况下直接加载csv文件,但在创建表以加载数据时出错如何从CSV文件中使用Python在MySQL中创建列名称?,python,mysql,csv,Python,Mysql,Csv,我通常使用大型CSV数据集。打开这些文件要花很多时间。我的计划是在不访问csv文件的情况下直接加载csv文件,但在创建表以加载数据时出错 import string import csv import mysql.connector mydb=mysql.connector.connect(host="localhost",user="root",password="password") mycursor = mydb.cursor()
import string
import csv
import mysql.connector
mydb=mysql.connector.connect(host="localhost",user="root",password="password")
mycursor = mydb.cursor()
with open(r"C:\Users\rcsid\Documents\Office Programs\Working prog\MOCK_DATA.csv") as csvfile:
csv_reader = csv.DictReader(csvfile)
line_count = 0
for row in csv_reader:
if line_count == 0:
print(f'create table rd.data ( {" varchar(50), ".join(row)} varchar(50))')
mycursor.execute(f'create table rd.data ( {" varchar(50), ".join(row)}) varchar(50))')
line_count += 1
line_count += 1
print语句给出了以下结果:
创建表rd.data(id varchar(50)、名varchar(50)、姓varchar(50)、电子邮件varchar(50)、布尔varchar(50)、硬币varchar(50))
上述说法似乎是正确的
但是execute语句抛出了一个错误:
编程错误:1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解第1行中使用“varchar(50))”附近的正确语法
这是开始部分。完整的程序将有许多其他检查。想知道如何解决这个错误吗?
PS:Python新手我可以通过创建一个字符串语句来解决这个问题:
sql_str=f'create table rd.data ( {" varchar(50), ".join(row)} varchar(50))'
mycursor.execute(sql_str)
这解决了问题。我测试了上面显示的
createtable
语句,它没有错误。我认为错误来自其他SQL语句。@Siddhartha roy choudhury您正在运行哪种服务器类型(如mariadb、mysql)和该服务器的版本?这可能会使一些人更容易重现这个问题……MySQL 8.0和Python 3。这是我目前运行的唯一一条SQL语句,我认为问题在于我用来创建表的Python命令。执行(f'create table rd.data({“varchar(50),”.join(row)})varchar(50)))