2016-04-28 77 views
1

我剛剛設計了一個Pg數據庫,需要選擇一種填充數據的方式,數據由txt和csv文件組成,但通常可以是包含帶分隔符的任何類型的文件, m在Java編程爲了使數據具有相同的結構(有很多不同種類的文件,我需要找到文件的每一列代表什麼,所以我可以將它與我的DB的列)我想到了兩個方式:高效的數據導入PostgreSQL數據庫DB

  • 將文件轉換爲同一類型的文件(JSON),然後讓數據庫定期檢查JSON文件並導入其內容。

  • 通過JDBC直接連接到數據庫將字符串發送到數據庫(我仍然需要創建一個備份文件,其中包含插入到數據庫中的內容,因此在這兩種情況下都有一個創建和寫入的文件)。

你會以時間效率明智地去?我有點試圖使用第一個,因爲它更容易處理DB中的json文件。 如果您有任何其他建議,也歡迎!

+0

你是什麼意思在db中處理json文件?你打算在數據庫中存儲純粹的json文檔嗎?雖然postgresql的JSONB字段非常酷,但這並不是使用postgresql的理想方式。一個nosql解決方案會更好。 – e4c5

+0

不,我的意思是從JSON導入數據,我知道JSONB,但在我的情況下,它不會非常有用 –

回答

1

JSON或CSV

如果你有你的數據轉換要麼CSV或JSON格式的自由,CSV是一個選擇。這是因爲您可以使用COPY FROM將大量數據一次批量加載到postgresql中。

CSV支持COPY但JSON不支持。

直接插入值。

如果您只需插入一些(或甚至幾千)記錄但不適用於大量記錄,這將是緩慢的方法。

如果您選擇此方法,您可以使用COPY TO創建備份。但是,如果你覺得你需要用你的java代碼創建備份文件。選擇格式爲CSV意味着您可以像上面討論的那樣批量加載。

+0

數據有時會變得非常大,所以第一個建議的方法更好。 但是是不好使用COPY FROM的JSON?該方法表明[這裏](http://stackoverflow.com/questions/33129526/loading-json-data-from-a-file-into-postgres)比使用CSV需要多一點時間,但它仍然安全嗎?我們只需要確保json文件中的每行代表數據庫中的一行(我們基本上將批量導入json文件到臨時表中,然後提取所需的值並將它們插入到相應的列中) –

+0

是的,例如,整個記錄將作爲單個列加載 - 一個JSON字段(現在由JSONB字段過時)。這不是關係。如果你想以這種方式存儲你的數據,這是完全可能的和安全的,但不是最優的。您沒有使用RDBMS的任何功能 – e4c5

+0

因此,基本上沒有其他方法可以在不通過jsonb字段或讀取字符後讀取整個json數據字符的情況下獲取json數據? –