2016-04-20 60 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