php - 通过 CSV 将客户数据库导入 RDS (MySQL)

标签 php mysql amazon-rds

我们正在开发一项功能,允许我们的用户将他们自己的客户/营销数据库从他们上传到我们服务器的 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/

相关文章:

php - 正则表达式捕获额外的字符

MySQL 关系和连接

php - 使用 PHP 创建表

php - 区分更新和插入查询

c# - 由于数据包格式意外,握手失败

javascript - 如何检测 Javascript 中是否设置了 cookie?

php - 在 mysql ORDER BY 中使用 case

php - 注册页面未注册用户

amazon-web-services - AWS CloudFormation - RDS 实例准备就绪后创建表吗?

postgresql - EC2 和 RDS 之间的备份 gem pg_dump 版本不匹配