2017-03-07 31 views
0

我使用pymysql將大csv文件加載到數據庫中,因爲使用加載infile而不是插入的內存限制。然而,代碼完成後,當我查詢服務器它的表中的數據它返回一個空集。在文件mysql中加載數據之後的空集

import pymysql 


conn = pymysql.connect(host = 'localhost', port = 3306, user = 'root', passwd = '', local_infile = True) 
cur = conn.cursor() 

cur.execute("CREATE SCHEMA IF NOT EXISTS `test`DEFAULT " 
      "CHARACTER SET utf8 COLLATE utf8_unicode_ci ;") 
cur.execute("CREATE TABLE IF NOT EXISTS " 
      "`test`.`scores` (`date` DATE NOT NULL, " 
      "`name` VARCHAR(15) NOT NULL," 
      "`score` DECIMAL(10,3) NOT NULL);") 
conn.commit() 

def push(fileName = '/home/pi/test.csv', tableName = '`test`.`scores`'): 
    push = """LOAD DATA LOCAL INFILE "%s" INTO TABLE %s 
      FIELDS TERMINATED BY ',' 
      LINES TERMINATED BY '\r\n' 
      IGNORE 1 LINES 
      (date, name, score);""" % (fileName, tableName) 
    cur.execute(push) 
    conn.commit() 
push() 

我得到一些截斷警告,但沒有其他錯誤或警告的工作。有想法該怎麼解決這個嗎?

回答

0

我做了一些事情來解決這個問題,首先我改變了我的sql服務器的配置文件,以允許加載infile,繼此MySQL: Enable LOAD DATA LOCAL INFILE。然後,問題是用線,

LINES TERMINATED BY '\r\n' 

修復是將其更改爲

LINES TERMINATED BY '\n' 

後腳本運行正常並且是

行不是插入行顯著快
相關問題