我正在开发一个python应用程序,以通过.csv文件在我的数据库中插入数据。但是,导入文件时会出现以下错误:
Warning: (1262, 'Row 1 was truncated; it contained more data than there were input columns')
result = self._query(query)
基本上是csv文件中的所有行。文件中的数据如下:
我可以将相同的方式直接导入到工作台中,但是我想通过应用程序来完成。
按照下面的代码:
from tkinter import *
import pymysql
import os
import os.path
tess = Tk()
def import_file():
conn = pymysql.connect(host='localhost', port=3306, user='root', password='', db='omnia')
print('connect successfull!')
if os.path.exists('C:/temp/teste.csv'):
statm = "LOAD DATA INFILE 'C:/temp/teste.csv' INTO TABLE testtable FIELDS TERMINATED BY ','"
cursor = conn.cursor()
cursor.execute(statm)
bt = Button(tess, text='browse file')
bt.place(x=10, y=10)
bt = Button(tess, text='import file', command=import_file)
bt.place(x=10, y=45)
tess.mainloop()
还有表格:
create table testTable(
n_id int not null auto_increment,
c_nome varchar(255),
c_depto varchar(255),
n_salario float,
primary key (n_id));
您的表定义以自动增量列开头,但是所有这些列的输入数据都显示为零。因此,请勿导入它们。
您的输入数据行以逗号分隔符结尾。在CSV世界中,这意味着每行以空列结尾。跳过它。
此SQL,未经调试,应正常工作。
LOAD DATA INFILE 'C:/temp/teste.csv'
INTO TABLE testtable
(@dummy_id,c_nome,c_depto,n_salario,@dummy)
FIELDS TERMINATED BY ',';
[列列表中的@dummy
列告诉导入将这些值放置到虚拟而不是表中:换句话说,将其跳过。