我们正在开发一项功能,允许我们的用户将他们自己的客户/营销数据库从他们上传到我们服务器的 CSV 文件导入到我们的系统中。 我们在 Amazon EC2 上的 Ubuntu 10.04 上使用 PHP,由 Amazon RDS 上的 MySQL 提供支持。
我们目前得到的是一个使用 LOAD DATA LOCAL INFILE 的脚本,但它有点慢,并且当真实用户开始上传包含 100,000 多行的 CSV 文件时会非常慢。
我们确实有一个自动化服务器,它在后台运行多个任务来支持我们的应用程序,所以也许这是移交给该服务器(或服务器组)的东西? 因此,用户会上传一个 CSV 文件,我们会将其保存在 S3 存储桶中,然后在数据库中的某处放置一行将该文件链接到给定用户,或者使用 SQS 或其他方式让自动化服务器知道要导入它,那么我们只是告诉用户他们的记录正在导入并将在接下来的几分钟/几小时内逐渐显示出来?
有没有人有这方面的经验?我的逻辑是正确的还是我们应该朝完全不同的方向看?
提前致谢。
最佳答案
我的公司正是这样做的,通过 cron。
我们允许用户上传 CSV,然后将其发送到目录等待。每 5 分钟运行一次的 cron 检查上传时创建的数据库条目,该条目记录用户、文件、日期/时间等。如果在数据库中找到未解析的文件,它会根据文件名,检查以确保数据有效,运行 USPS 地址验证,最后将其放入主用户数据库。
我们有类似的设置功能来发送大批量的电子邮件,用户横截面的模型抽象等。总而言之,它工作得很好。三台服务器足以处理数百万条记录,每次导入加载数万条记录。
关于php - 通过 CSV 将客户数据库导入 RDS (MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10856989/