【发布时间】:2013-10-22 15:39:00
【问题描述】:
我必须处理一个涉及存储在原始文本文件中的大量数据的项目。每个字段由其大小分隔,即字段 1 从位置 0 到 3 等。(不是 CSV 文件)
该文件包含超过一百万行。
我需要将它存储到数据库中。我查看了几篇关于什么是最好的方法的帖子,似乎技术选择比算法更重要。我对 Php、Perl 或 Python 持开放态度。随意提出任何建议。
现在,文件结构本身有点棘手。这是一个例子:
A880780093vvd47aa8db20d4133e6f587cf046054e8316000212093659D11001
C880780093d47aa8db20d4133e6f587cf046054e831600021209365907000 0711012012C
A880780093vvcaacb22bfb091127f9c9e14175d858ee25000212093681O11001
C880780093caacb22bfb091127f9c9e14175d858ee2500021209368107000 0611012012ADI
D880780093caacb22bfb091127f9c9e14175d858ee250002120936810700011012012HK00210Z
A880780093vvb92f937a3fd1268c1478deb174a1bfca86000212093750S11041
C880780093b92f937a3fd1268c1478deb174a1bfca8600021209375007000 3911012012PB
C880780093b92f937a3fd1268c1478deb174a1bfca8600021209375007000 3911012012B 1002
E880780093212093750b92f937a3fd1268c1478deb174a1bfca8600007000110120120100000127000000000000
C880780093b92f937a3fd1268c1478deb174a1bfca8600021209375007000 3911012012B
基本上有6种线,从A到F; A行是块的标题。行 B 和 C 具有完全相同的长度和字段。 D 行可能是 C 行的补充,这意味着它附属于 C 行,但不是必需的;也意味着没有线 C 就不可能有线 D。线 E 和 F 是独立的线,仅连接到线 A。(所有线都是块的一部分,因此它们都可以“连接”到线 A,或一个虚拟块 ID)
我将如何创建一个模型以使我能够: - 根据某些标准修改某些行上的某些数据(即,如果 C 行的第 5 个字符为 4,则第 10 个变为 7) - 跟踪修改后的(即,我希望能够将它们链接到原来的自我) - 能够重建原始文本文件,删除原始行并用修改后的版本替换它们 - 能够在块中插入新行:如果行 C 有第 7 个字符 = 0,那么我在它下面添加一个 D 行。 - 保持线路顺序不变。 (如果插入一行,则将下一行的顺序向前移动1个等级)
我考虑在所有 5 个行表中使用 parent_id 外键(每种行类型一个,因为它们没有相同的字段);从而解决了行排序问题,但我坚持重建修改后的文件版本。我还考虑过将文件分成块(从 A 行开始),然后将行链接到块 ID...
任何建议将不胜感激!
提前非常感谢!
【问题讨论】:
-
哈,什么是大的,什么不是我们的时代?
-
我认为这太复杂了,无法在这里提出模糊的要求。也许您可以用更具体的小部分重新表述您的问题?我真的不在乎设计和实施您的解决方案。
标签: php python perl database-design