我想使用cakePHP框架將JSON文件(也可以CSV格式)插入到mySQL數據庫中。基本要求很明確,但周圍的要求很難:PHP將JSON/CSV與SQL數據庫相匹配(cakePHP)
- JSON/CSV文件很大(大約200 MB,最多200.000行)。
- 該文件包含幾個字段。這些字段需要映射到mySQL數據庫中具有不同名稱的字段。
- 該CSV包含一個名爲art_number的字段。該字段也存在於mySQL數據庫中。 art_number是唯一的,但不是mySQL中的主鍵。如果CSV和數據庫具有相同的art_number,我想更新mySQL記錄。如果不是,應該創建一個新的記錄。
- CSV文件的幾個字段在存儲之前需要處理。還需要添加其他字段。
- 該CSV包含一個image_URL。如果它是數據庫的新記錄(未知art_number),則應該複製,修改(使用imagick)該圖像並存儲在服務器上。
- 整個工作需要每天運行。
正如你可以看到有很多限制(內存,運行時等)。但我不確定如何從架構的角度來看待這個問題。例如。我應該首先嚐試將所有內容插入到單獨的「導入」數據庫表中,然後單獨運行這些步驟?從數據庫中將ID映射到CSV行的好方法是什麼?如果我能夠根據art_number映射ID,Cakephp能夠執行新建或更新現有記錄。另外改變和複製高達200.000的圖像似乎是一個大問題。那麼如何將它分解成更小的塊呢?
如果您能幫助您找到正確的策略,我將不勝感激。在記憶和速度方面我需要考慮什麼? Doe是否有意義將流程拆分成不同的工作? oyu會怎麼做?
您的情況與_any_ csv導入過程有何不同?您可以使用[適當的功能](http://php.net/manual/en/function.fgetcsv.php)讀取文件,並一次處理一行數據。無論文件爲1行還是1百萬行,導入邏輯原則上都是相同的。首先使它成爲一行,然後使用[cli process](http://book.cakephp.org/3.0/en/console-and-shells.html)。 – AD7six
感謝您的澄清。我是否有權假定PHP CLI腳本在運行時等方面沒有限制? – Gegenwind