簡體   English   中英

MySql 批量導入,無需將文件寫入磁盤

[英]MySql bulk import without writing a file to disk

我有一個運行 mysql 數據庫后端的 django 站點。 我接受來自一位管理員用戶的相當大的上傳來批量導入一些數據。 數據的格式與數據庫中所需的格式略有不同,因此我需要進行一些解析。

我希望能夠將 pivot 數據導入 csv 並將其寫入 cStringIO object 然后只需使用 mysql 的批量導入命令來加載該文件。 我寧願先跳過將文件寫入磁盤,但我似乎找不到解決方法。 過去,我基本上用 postgresql 完成了這件事,但不幸的是,這個項目在 mysql 上。

簡而言之:我可以使用 memory 文件,如 object 並以某種方式使用 mysql 批量導入操作

有一個名為“系統程序員生成器技巧”的優秀教程解決了處理大型日志文件的問題,這與您的情況相似但不完全相同。 只要您可以執行所需的轉換並僅訪問 stream 中的當前(可能還有以前的)數據,這可能對您有用。

我在許多答案中都提到了這個寶石,因為我認為它引入了一種非常有價值的不同思維方式。 有一個配套的文章, A Curious Course on Coroutines and Concurrency ,它可以嚴重扭曲你的頭。

如果通過“批量導入”你的意思是 LOAD DATA [LOCAL] INFILE 那么,不,沒有辦法首先將數據寫入某個文件,該死的。 你(和我)真的很想直接從數組中寫表。

但是一些操作系統,比如 Linux,允許駐留在 RAM 的文件系統來減輕一些傷害。 我沒有足夠的系統管理員知道如何設置其中一個; 我必須得到我的 ISP 的技術支持才能為我做這件事。 我發現了一篇可能有有用信息的文章。

HTH

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM