使用Python将.csv文件导入SQLite表时指定数据类型的有效方法?
我正在将带有标题的.csv文件中的数据导入到SQLite表中。这当然很容易做到,我可以简单地做到以下几点:使用Python将.csv文件导入SQLite表时指定数据类型的有效方法?,python,mysql,sqlite,csv,Python,Mysql,Sqlite,Csv,我正在将带有标题的.csv文件中的数据导入到SQLite表中。这当然很容易做到,我可以简单地做到以下几点: sqlite> .separator "," sqlite> .import 2015.csv tennisresults2015 但是,如果我这样做,那么所有列都默认为“TEXT”数据类型。相反,我希望我的数值字段默认为“整型”或“实型”数据类型,这两种类型都是合适的 现在我意识到,当我通过以下代码行创建表时,我可以在Python中显式定义每一列: conn = sqlit
sqlite> .separator ","
sqlite> .import 2015.csv tennisresults2015
但是,如果我这样做,那么所有列都默认为“TEXT”数据类型。相反,我希望我的数值字段默认为“整型”或“实型”数据类型,这两种类型都是合适的
现在我意识到,当我通过以下代码行创建表时,我可以在Python中显式定义每一列:
conn = sqlite3.connect('tennisresults.db') #connection
c = conn.cursor() #get a cursor object, all SQL commands are processed by it
c.execute('CREATE TABLE tennisresults2015(ATP INTEGER, Location TEXT, Tournament TEXT)') #etc
但是,此.csv文件有很多列,从文件的前两行可以看出,如下所示:
ATP,Location,Tournament,Date,Series,Court,Surface,Round,Best of,Winner,Loser,WRank,LRank,WPts,LPts,W1,L1,W2,L2,W3,L3,W4,L4,W5,L5,Wsets,Lsets,Comment,B365W,B365L,EXW,EXL,LBW,LBL,PSW,PSL,MaxW,MaxL,AvgW,AvgL
1,Brisbane,Brisbane International,01/05/2015,ATP250,Outdoor,Hard,1st Round,3,Duckworth J.,Simon G.,125,21,430,1730,6,2,6,2,,,,,,,2,0,Completed,4.5,1.18,4.3,1.2,4.33,1.2,4.67,1.23,4.73,1.23,4.31,1.2
我想知道是否有一种更有效的方法来代替我在Python中手动指定每个字段名和数据类型?遗憾的是,我认为答案是否定的,没有内置的方法来完成您的要求。您需要:
- 显式使用create语句,如问题中包含的语句
- 或者,在csv文件中包含数据类型,并编写您自己的解析机制来读取它们并将它们从实际导入中排除(您需要自己执行,而不是使用内置导入)
- 显式使用create语句,如问题中包含的语句
- 或者,在csv文件中包含数据类型,并编写您自己的解析机制来读取它们并将它们从实际导入中排除(您需要自己执行,而不是使用内置导入)
- 遗憾的是,我认为答案是否定的,没有内在的方式来满足你的要求。您需要: