2017-09-01 36 views
0

Heyho。我正在使用Postgresql 9.5,而且我正在急於解決問題。 我有多個.csv文件(40),他們都有相同的columncount和名稱。我現在想將它們導入到一個表中,但我想要每個.csv文件的ID。是否有可能在postgres中自動執行此操作? (包括添加一個新的id列)以及如何?將多個.csv文件加載到一個表中,然後根據.csv -postgres創建ID

的做法可能是這樣的:

test1.csv ==> table_agg ==> set ID = 1 
test2.csv ==> table_agg ==> set ID = 2 
. 
. 
. 
test40.csv ==> table_agg ==> set ID = 40 

,我會很高興,如果有人可以幫助我

+0

你確定你想這樣做這樣? (與爲每行添加某種數據集標識符並僅使用一個表...) – moooeeeep

+0

我可以做到這一點,這是真的,但然後我必須爲每個加載的表分配一個ID。 test1:ID = 1,test2:ID = 2,...我會更新我的問題 –

回答

0

添加包含文件名和其他信息的表格,你想添加到每個數據集。添加一個serial列,您可以將其用作數據表中的外鍵,即數據集標識符。

創建數據表。添加一個外鍵字段來引用另一個表中的數據集條目。

使用Python腳本解析並將csv文件導入數據庫。首先將條目添加到數據集表。然後確定數據集標識並將行插入到具有相應數據集標識集的數據表中。

0

我簡單的解決方案爲Python中的每個.csv文件分配一個ID,並輸出一個.csv文件。

import glob, os, pandas as pd 

path =r'PathToFolder' 
# all .csv-files in this folder 
allFiles = glob.glob(path + "/*.csv") 

# safe DFs in list_ 
list_ = [] 
# DF for later concat 
frame = pd.DataFrame() 
# ID per DF/.csv 
count = 0 

for file_ in allFiles: 

    # read .csv-files 
    df = pd.read_csv(file_,index_col=None,skiprows=[1], header=0) 
    # new column with ID per DF 
    df['new_id'] = count 
    list_.append(df) 
    count = count + 1 

frame = pd.concat(list_) 
frame.to_csv('PathToOuputCSV', index = False) 

繼續與SQL:

CREATE TABLE statement.. 
COPY TABLE_NAME FROM 'PathToCSV' DELIMITER ',' CSV HEADER; 
相關問題