2012-06-01 102 views
1

我們正在開發一個功能,讓我們的用戶導入自己的客戶/市場營銷數據庫到我們的系統從他們上傳到我們的服務器CSV文件。 我們在Amazon RDS上的MySQL支持的Amazon EC2上使用Ubuntu 10.04上的PHP。導入CSV通過客戶數據庫,以RDS(MySQL的)

什麼我們目前得到的是使用LOAD DATA LOCAL INFILE一個腳本,但它有點慢,而且會很慢,當用戶真正開始上載有超過10萬行的CSV文件。

我們確實有在後臺運行多個任務,支持了應用程序的自動化服務器,所以也許這是東西是交給該服務器(或服務器組)? 所以用戶會上傳CSV文件,我們會堅持在一個S3桶,要麼丟棄在數​​據庫中的行的地方,文件鏈接到一個特定用戶,或使用SQS什麼讓自動化服務器知道將其導入,那麼我們只是告訴用戶他們的記錄正在導入,並會在接下來的幾分鐘/幾小時內逐漸顯示出來?

有其他人有這種經驗嗎?我的邏輯是正確的,還是應該朝一個完全不同的方向發展?

在此先感謝。

回答

1

我公司正是這麼做的,通過cron。

我們允許用戶上傳CSV,然後發送到一個目錄等待。一個每5分鐘運行一次的cron會檢查一個上載數據庫條目,該數據庫條目記錄用戶,文件,日期/時間等。如果在數據庫中找到未被分析的文件,則它會根據文件名,檢查以確保數據有效,運行USPS地址驗證,並最終將其放入主用戶數據庫中。

我們有類似的設置功能發送大批量的電子郵件,用戶橫斷面的模型抽象等等。總而言之,它工作得很好。三臺服務器可以充分處理數百萬條記錄,每個進口載入數以萬計的記錄。

+0

啊,很高興聽到我們正走在正確的道路上。一旦cron看到它,通過LOAD DATA LOCAL INFILE將一個相對較大的CSV文件加載到MySQL中需要多長時間? – user1265617