我正在构建一个收集和解析“csv”文件的平台,其中包含5000行平均值和40列;任何注册用户都可以上传文件,因此理论上不应该限制上传和存储的文件数量(假设我每天上传的内容不超过20个)。这些文件由定制的PHP解析器解析,这种解析器有点高效,但问题出在这里:存储。 特别是,我想将这些数据存储在MySQL数据库中供以后使用:我应该如何组织我的数据库?我应该创建一个包含每个文件行的表,每个单元格包含原始文件的每列的内容吗?或者我应该为文件中的每一行插入一行? 第一个似乎更好,因为第二个解决方案构建了大量的行但效率也较低,因为任何时候我必须在数据库中提取任何数据,我将不得不再次解析整个blob然后提取我需要的数据
鉴于如果有太多用户同时连接,由于内存不足,我无法将数据存储在PHP数组中,这在这种情况下是最佳解决方案吗?
答案 0 :(得分:2)
由于所有文件都具有相同的列,因此您应将它们存储在一个表中,并添加另一个列(可能引用第二个表,每个上载一行)以唯一标识一组行。
E.g:
rowId, setId, col1, col2, ...
1, 1, 'abc', 'def', ...
2, 1, 'abc', 'def', ...
3, 1, 'abc', 'def', ...
4, 2, 'abc', 'def', ...
5, 2, 'abc', 'def', ...
6, 2, 'abc', 'def', ...
这是两组3行的数据可能是什么样的。