Python讀取大檔案並插入資料庫

2021-09-01 15:20:15 字數 1637 閱讀 6660

把幾個大的檔案的內容讀到資料庫中。

檢視了手冊open方法,首先想到了seek()方法,和fread()方法讀到一段內容來執行插入。

大概說一下方法吧。

一 取資料

取一段內容,以回車(\n)分隔內容為資料,批量插入資料庫

如要讀取檔案內容如下:

abcd

efgh

ijkl

mnop

按13個字元取內容

root_path = os.path.abspath('./') + os.sep

f = open(root_path + 'file/pass.txt', 'r')

f.seek(0)

line = f.read(13) #從檔案中讀取一段內容

輸出如下:(回車[\n]佔乙個字元)

abcd

efgh

ijk

轉換為陣列後

l = ['abcd', 'efgh', 'ijk']

此時插入資料庫內容為

['abcd', 'efgh']

將最後一條資料快取 t = l.pop()

下一次迴圈得到陣列為

l = ['l', 'mnop']

此時將第一條資料和快取的資料合併

l[0] = t + l[0]

並快取陣列最後一條資料

二 插入資料

插入資料,使用批量插入

最開始的時候我拼好sql語句如:insert into xx(`a`) values(1),(2),(3)...

然後呼叫mysql-python的方法

conn = mysql.connector.connect(host='127.0.0.1', database='***', user='***', password='***')

conn.cursor().execute(sql)

結果執行了大概2萬多就報lost connection to mysql server錯誤了。後來我看mysql-python裡面的**原來批量插入資料有封裝好的方法是

conn.cursor().execute(sql)

data = [

('jane','555-001'),

('joe', '555-001'),

('john', '555-003')

]stmt = "insert into employees (name, phone) values (%s,%s)"

cursor.executemany(stmt, data)

注意以上兩點後,上**:

python 讀取大檔案

以前一直沒有關注過python讀取大檔案的問題,因為一直都是順順暢暢地讀取了檔案。直到今天有人問我python怎麼讀取檔案出現了記憶體不足的錯誤?我才發現原來大檔案 gb級別 的讀取和普通檔案的讀取是不一樣的。下面介紹三種我親測可用的方法。這裡的檔案型別可以是txt,dat等型別的檔案。用read ...

python讀取大檔案

最近在學習python的過程中接觸到了python對檔案的讀取。python讀取檔案一般情況是利用open 函式以及read 函式來完成 f open filename,r f.read 這種方法讀取小檔案,即讀取遠遠大小小於記憶體的檔案顯然沒有什麼問題。但是如果是將乙個10g大小的日誌檔案讀取,即...

python讀取大檔案 python讀取大檔案

python讀取檔案對各列進行索引 可以用readlines,也可以用readline,如果是大檔案一般就用readlined a in open testfile.txt r for line in a in columnssplit line.rstrip split d columnsspli...