使用Python将多个CSV文件导入MySQL

Bti*_*rt3 1 python mysql

我正在尝试使用有趣/有趣的示例来学习MySQL和Python.我是两个新手,因为我是一个交易财务人员.我一路上学到了很多东西,但我不知道该去哪里.

我想要导入的数据文件包含在一个zip文件中,托管: 这里

我解压缩了目录,有超过1000个文件.在下面的代码中,我只是尝试单独引用其中一个文件以将其解析为MySQL.

我完全知道必须有一个更容易的方法,但我正在学习,我确信我的代码反映了它(你可以看到我键入了一些基本的打印,看看我的代码是正确的).

您将提供的任何帮助将非常感激.从本质上讲,当涉及到Python时,我认为这是一种业余爱好,也是一种获取我想要使用的网络上大量数据的方法.我粘贴了下面的代码,以便您可以看到我来自哪里.

PS对不起有关下面的代码,无法找出更好的发布方式.

下面的代码是我的创建表脚本

> DROP TABLE IF EXISTS `nba`.`event`;
CREATE TABLE  `nba`.`event` (
  `a1` varchar(45) DEFAULT NULL,
  `a2` varchar(45) DEFAULT NULL,
  `a3` varchar(45) DEFAULT NULL,
  `a4` varchar(45) DEFAULT NULL,
  `a5` varchar(45) DEFAULT NULL,
  `h1` varchar(45) DEFAULT NULL,
  `h2` varchar(45) DEFAULT NULL,
  `h3` varchar(45) DEFAULT NULL,
  `h4` varchar(45) DEFAULT NULL,
  `h5` varchar(45) DEFAULT NULL,
  `period` int(11) DEFAULT NULL,
  `time` time DEFAULT NULL,
  `team` varchar(3) DEFAULT NULL,
  `etype` varchar(15) DEFAULT NULL,
  `assist` varchar(45) DEFAULT NULL,
  `away` varchar(45) DEFAULT NULL,
  `block` varchar(45) DEFAULT NULL,
  `entered` varchar(45) DEFAULT NULL,
  `home` varchar(45) DEFAULT NULL,
  `left` varchar(45) DEFAULT NULL,
  `num` int(11) DEFAULT NULL,
  `opponent` varchar(45) DEFAULT NULL,
  `outof` varchar(45) DEFAULT NULL,
  `player` varchar(45) DEFAULT NULL,
  `points` int(11) DEFAULT NULL,
  `possession` varchar(45) DEFAULT NULL,
  `reason` varchar(50) DEFAULT NULL,
  `result` varchar(10) DEFAULT NULL,
  `steal` varchar(45) DEFAULT NULL,
  `type` varchar(30) DEFAULT NULL,
  `x` varchar(2) DEFAULT NULL,
  `y` varchar(2) DEFAULT NULL,
  `gameid` varchar(15) NOT NULL,
  `seqnum` int(11) NOT NULL AUTO_INCREMENT,
  `updated` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`seqnum`,`gameid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Datafiles of play by play from basketballgeek.com';
Run Code Online (Sandbox Code Playgroud)

这是我的python脚本.我把上面的表放在一个名为NBA的模式中.我设置了我的表,以便我相信,为每个输入数据库的记录创建一个序列号.我将gameid作为字符串传递给它,并假设将为每个insert语句创建时间戳.我知道有一个错误,但我无法弄清楚它是什么.

sql = """LOAD DATA INFILE '%s' INTO TABLE event FIELDS TERMINATED BY ',' LINES TERMINATED BY '\\n';"""  % path

print sql

try:
    cursor.execute(sql)
    db.commit()
except:
    print "ERROR"
    db.rollback()

 db.close()
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 5

为什么不使用MySQL自己的CSV导入功能?

http://dev.mysql.com/doc/refman/5.0/en/load-data.html

LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\n';
Run Code Online (Sandbox Code Playgroud)