2016-05-30 129 views
2

我需要從csv文件中加載大型數據集(現在20GB,但將來100GB)。我在Python中使用MySQLdb模塊(PyCharm)。我也只需要選擇一些特定的列。到目前爲止,我已經嘗試過:如何從Python中的csv文件創建SQL數據庫

import csv 
import MySQLdb 

mydb = MySQLdb.connect(host='localhost', 
    user='root', 
    passwd='', 
    db='mydb') 
cursor = mydb.cursor() 

csv_data = csv.reader(file('collected_quotes_sample.csv')) 
for row in csv_data: 
    cursor.execute('INSERT INTO testcsv(RIC, Date, Time, Ask, Bid, BAS, window) VALUES(%s, %s, %s, %s, %s, %s, %s)', row) 
#close the connection to the database. 
mydb.commit() 
cursor.close() 
print "Done" 

但它提供了很多錯誤。我是python和SQL數據庫的新手,所以我不熟悉命令/代碼。所以我有幾個問題:

1. with MySQLdb.connect(host,user,passwd,db etc), what are host, user, password etc? to my understanding, they are credentials for my account in the computer. so do I need to put in my user account and password? 
2. What does mydb.cursor do? 
3. How to upload a csv file into a SQL database? and after the database is created, I can write a python script to work on it and there is no need to re read/create the database? 

非常感謝!

+0

你真的有本地主機上的MySQL服務器設置? – Keatinge

+0

蟒蛇MySQLdb只是一個客戶端,可以連接到真正的MySQL服務器 – YOU

+0

@Keatinge我不認爲我有MySQL服務器設置。我怎樣才能做到這一點?謝謝 – duckman

回答

0

回答您的問題

  1. 與MySQLdb.connect(主機,用戶,passwd文件,數據庫等),什麼是主機,用戶名,密碼等?據我的理解,他們是我的 帳戶在計算機中的憑據。所以我需要輸入我的用戶帳戶和密碼 ?
  • :主機服務器的IP地址+端口NUM。 user/pwd是您在服務器端創建的客戶端用戶。一臺主機可以在裏面創建很多數據庫,所以你需要指定數據庫。通常,當您啓動時,您可能會使用localhost(127.0.0.1),並且端口號是您在創建服務器時定義的內容。一旦服務器啓動,一個或多個客戶端可以連接到數據庫服務器。然後你需要擁有一個超級用戶(如root),擁有所有權限和其他一些普通用戶(可能擁有較少的權限)。
  1. 什麼mydb.cursor辦?
  • :光標是可以執行的操作,如SQL語句的對象。你總是需要Cursor對象與MySQL服務器交互。如果您使用的是原生SQL腳本與MySQL服務器進行交互,您並不需要這個對象,但由於您將MySQLdb用作Python包裝器,因此您需要使用它作爲DB-API要求您接口以他們的方式(遊標對象是在Python DB-API 2.0中指定的抽象)。
  • 如何上傳CSV文件到SQL數據庫?並且在創建數據庫之後,我可以編寫一個python腳本來處理它並且不需要重新讀取/創建數據庫?
    • :一般來說,你在問題中所示的代碼執行上傳過程。因此,一旦您成功上傳,您可以稍後通過使用MySQLdb在您的Python中實現一些SQL檢索語句來檢索它。創建數據庫後,除非想要刪除所有舊數據,否則很少需要重新創建數據庫。並且要使用它,您始終需要從數據庫中獲取read。但是你可以把常用的SQL(或者調用一些存儲的函數/過程)放到你的Python代碼中,這樣你就可以調用一個函數來以你想要的方式檢索數據。

    一般來說,我想你應該在衝過去之前瞭解more about MySQL basics。以及如何Install MySQL on Windows

    +0

    @duckman,您可能首先要經過[MySQL Tutorial](http://www.mysqltutorial.org/) – 2342G456DI8

    +0

    非常感謝您的詳細解答,我非常感謝。您能否將我的代碼更具體地上傳到SQL數據庫?特別是,我想從我的計算機上的大型csv文件創建一個SQL數據庫。我如何創建一個服務器?我需要用戶名和密碼嗎?或'根'是好的用戶名?而我的代碼中的'localhost'似乎不起作用。非常感謝您使用教程鏈接 – duckman

    +0

    。我會通過他們 – duckman

    0

    如果你想只是爲了用兩種語言播放的緣故創建與Python的SQL數據庫,你應該嘗試的SQLite:

    import sqlite3 
    conn = sqlite3.connect("brand_new_db.db") 
    

    和你做。

    網上有很多教程。例如This,可能是一個很好的起點。

    +0

    謝謝,有太多的教程網站,我不知道哪一個是好的。你的看起來很小巧,而且很好。 sqlite3和MySQLdb模塊有什麼不同嗎? – duckman