【问题标题】:Storing data in flat files将数据存储在平面文件中
【发布时间】:2018-02-21 04:02:08
【问题描述】:

我有两个格式奇怪的数据文件。需要将其解析为某种下降格式以用于将来的目的。解析后,我最终得到了两种格式,其中一种格式具有 id,与该 id 相关的相应信息将来自另一个文件。

例如: 从文件 1 我得到

姓名、职位、PropertyID

来自文件 2 属性 ID、属性 1、属性 2

像这样,我在两个文件中都有更多列。

将这些信息存储在平面文件中作为数据库的服务器的空闲方式是什么。由于某种原因,我不想使用数据库(Mysql,MsSql)。

最初我想使用单个逗号分隔的文件。但最终会使用这么多列,当我更新这些信息时会产生问题。

我将在其他一些使用 java 和 python 的应用程序中使用解析的数据 任何人都可以提出更好的方法来处理这个

谢谢

【问题讨论】:

  • 更好的方法?使用数据库。 “我不想使用数据库”不是一个好理由。
  • 使用 sqlite 数据库 - 它不需要服务器,存储在 1 个平面文件中,python 拥有所有驱动程序,并且比平面文件好得多。既然可以使用这么简单的东西,为什么还要重新发明轮子?
  • 使用json格式

标签: java python flat-file


【解决方案1】:

确保您使用 ID 规范化您的数据,以避免在一次更改时接触到如此多不同的数据列。就像您上面提到的 file2 一样,您可以通过仅使用 propertyId 和 property 列将列减少到两个。而不是在单行中将 1 个 propertyId 与 2 个属性相关联,而按照上面的示例,您将有 1 个 propertyId 与 1 个属性相关联。您需要另一个文件来关联您的两个主要数据表。像这样规范化您的数据可以使您在发生更改时对它们的更新非常少。

文件1:

owner_id |姓名 |位置 |
1 |马云 |首席执行官 |

文件2:

property_id |属性 |

101 |好莱坞大厦 |

102 |迈阿密海滩别墅 |

文件3:

所有者 ID |属性 ID |

1 | 101

1 | 102

【讨论】:

    【解决方案2】:

    我会使用 JSON。 JSON 可以轻松地与 Python 或 Java 中的对象相互转换。在 Python 中,JSON 直接映射到 dict。 Java 有多种转换工具。比自己做所有这些工作要少得多。对于 Java,请参阅 JAXB。

    类似的东西。

    文件 1:将人员映射到 propertyID

    {
       {"firstName": "John", "lastName": "Smith", "position": "sales"} : 123},
       {"firstName": "Jane", "lastName": "Doe", "position": "manager"} : 456} 
    }
    

    文件 2:将 propertyId 映射到属性列表。

    {
        {123: [{"address": "123 street", "city": "LA"}, {"address": "456 street", "city": "SF"}] } ,
        {456: [{"address": "123 ave", "city": "XX"}, {"address": "456 ave", "city": "SF"}] } 
    }
    

    附言将人员与属性 ID 列表相关联并让每个属性都有自己的 ID 可能更有意义。更容易移动和重新分配东西。只是我的 0.02 美元。

    【讨论】:

    • 似乎是个好主意..但这可以存储在单个 json 文件中..我的意思是 file1 和 file2..
    • 当然。您可以将它们包装在一个容器中,并命名为“房地产”。然后将每个子集命名为“代理”和“属性”。
    猜你喜欢
    • 2012-06-09
    • 2012-09-22
    • 2012-08-20
    • 2013-02-07
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 2013-10-24
    • 2013-08-21
    相关资源
    最近更新 更多