2016-04-20 24 views
0

我对Python很新,所以我想问你一些关于正确策略的建议。 我有一个固定的数据位置的文本文件,就像这样。 它可以有超过10000行。最后,数据库(SQL)表应该如下所示。 File & Tablepython不寻常的文本文件到数据库:策略

重要的栏是nr。它定义了这一行中的数据类型。 012-(2->标题,3->文本6->数量和价格)。所以数据来自不同的行。

问题:

  1. 读数据:由于总有超过4行 包含数据,对它们进行处理一行行,只要一个SQL 陈述完毕后,发送或:阅读将所有行列入 列表的列表中,然后遍历这些列表?或者:读取 一个列表中的所有行并重复?
  2. 将数据转换为csv或json而不是准备sql语句,然后使用数据库软件导入到db会更好吗? (或使用NoSQL数据库)

我希望我明确了我的问题,如果不是,我会尝试..... 每个建议都非常感谢。

+0

你正在使用什么类型的SQL平台? (MSSQL,MySQL) –

+0

@RichardBoyce:这应该是开放的,我个人使用MySQL(或MariaDB)。 NoSQL可以是MongoDB。 – nanuuq

+0

您的复杂性大部分可能会在阅读结束时出现。与其说是数据的解析,是因为你需要在多行中跟踪你的状态 - 也就是说如何知道你什么时候读了你所需要的,并准备好将另一行插入到数据库中。 db或csv并不重要。 json可能会有所帮助,但是它首先会产生它的复杂性,并在标题/文本部分处理任意文本。同意Cyb ...,刚开始。 –

回答

0

这个问题非常简单,所以也许你已经过度了一点。我的建议是使用最简单的解决方案:读取一行,解析它,准备一个SQL语句并执行它。如果数据库大约有10000条记录,则任何东西都可以工作,例如SQLLite会做得很好。这个问题已经以表格的形式出现了,所以像SQLLite或MySQL这样的关系数据库的翻译是一个非常明显和直接的选择。如果你的数据需要一个不同类型的组织,那么你可以看看其他类型的数据库:不要只因为它是“时髦的”。

+0

感谢您的建议。由于有多行包含一个语句的数据,我不确定正确的方法:使用列表或字符串,因为我必须检查每行的记录类型(第42列),然后将数据连接在一起SQL语句。 – nanuuq

+0

在这种情况下,您需要一个列表,您稍后将后处理到SQL中,因为从您共享的数据看来,记录标识不一定是连续的。 – Cyb3rFly3r

+0

其实它们是2排是“信息块”的开始,5是结束。以下6行表示此区块的价格不同。然后再从2开始,一个新的块。由于我必须检查某个位置并逐块处理数据,因此我不确定这是逐行更好还是逐列清单。但是,谢谢,我会开始并尝试一下! – nanuuq