使用Python将.csv文件导入SQLite表时指定数据类型的有效方法?

时间:2016-04-10 23:25:47

标签: python mysql sqlite csv

我将带有标题的.csv文件中的数据导入SQLite表。这很容易做到,我可以简单地做到以下几点:

sqlite> .separator ","
sqlite> .import 2015.csv tennisresults2015

但是,如果我这样做,那么所有列都默认为' TEXT'数据类型。相反,我希望我的数字字段默认为' INTEGER'或者' REAL'数据类型,这是适当的。

现在我意识到当我通过以下代码行创建表时,我可以在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中手动指定每个字段名称和数据类型?

1 个答案:

答案 0 :(得分:0)

可悲的是,我认为答案是否定的,没有内置的方法来做你所要求的。你需要:

  • 明确使用类似于问题中包含的创建语句。
  • 或者,在csv文件中包含数据类型,并编写自己的解析机制来读取它们并将它们从实际导入中排除(您需要自己执行而不是使用内置导入。)