【发布时间】:2013-05-22 16:19:37
【问题描述】:
所以基本上我有一堆 1 Gig 数据文件(压缩),其中只有包含带有时间戳和其他内容的 JSON 数据的文本文件。
我将使用 PHP 代码将此数据插入 MYSQL 数据库。
我将无法将这些文本文件存储在内存中!因此,我必须逐行处理每个数据文件。为此,我使用了 stream_get_line()。
- 包含的一些数据将是更新,一些将是插入。
问题 使用 Insert / Select / Update 语句会更快,还是创建 CSV 文件并以这种方式导入?
创建一个批量操作的文件,然后从 sql 执行它?
我基本上需要使用不存在的主键插入数据,如果主键确实存在,则更新数据上的字段。但我会在大量的情况下这样做。
性能永远是问题。
更新 该表有 22,000 列,仅说其中 10-20 不包含 0。
【问题讨论】:
-
您是否考虑过使用
LOAD DATA INFILE代替?如果格式正确,它可以将 CSV 直接读入数据库。 -
正在考虑使用 LOAD DATA INFILE,唯一的问题是一些数据将被合并,而其他数据将被插入。 @tadman
标签: php mysql sql merge bigdata