2016-04-04 17 views
0

Bir veritabanı ve bir tablo oluşturdum. ...Ubuntu aracılığıyla PostgreSQL bir metin dosyası yerleştirin?

numB2

:

numA1: numB1

numA2

Tablo Adı (A, B, C)

Ben de böyle biçimlendirilmiş bir metin dosyası var

numAn: numBn

Bu metin dosyasını t'ye nasıl eklerim Tablo C ve sütun C için tüm satırı bir değere ayarladı? C sütununun değeri, tablo boyunca aynı olmalıdır.

cevap

0

Kontrol COPY:

\copy your_table(c) FROM 'yourPathOnClient/yourFile.txt'; 
+0

ve sonra kopyaladıktan sonra, c sütununun boş olduğu değerinize c sütununda bir güncelleştirme yapın. – Bill

+0

Ama aynı tabloya başka bir metin dosyası eklemek istersem, fakat farklı c ister miyim? – Anh

0

Adım 1: kabuk itibaren STDIN kullanarak tabloya veri kopyalamak:

CREATE TABLE csv_data (
    colA FLOAT, 
    colB FLOAT 
); 

Adım 2: İçe aktardığınız dosya eşleşen bir tablo oluşturun . veri dosyasındaki değil sütunu ekleyin ve bunu bir varsayılan değer vermek:

cat YourFile.csv | psql -c "COPY csv_data FROM STDIN (FORMAT CSV, DELIMITER ':', HEADER FALSE);" 

Adım 3 (. Eğer meraklıysanız, STDIN gitmek yoludur neden this other question bakınız).

ALTER TABLE csv_data ADD COLUMN colC FLOAT DEFAULT 1234.56; 

Düzenleme:

Birden fazla dosya almak isterseniz:

1. Adım:

CREATE TABLE csv_data_staging (
    colA FLOAT, 
    colB FLOAT 
); 

CREATE TABLE csv_data (
    colA FLOAT, 
    colB FLOAT, 
    colC FLOAT 
); 

Adım 2:

cat YourFile.csv | psql -c "COPY csv_data_staging FROM STDIN (FORMAT CSV, DELIMITER ':', HEADER FALSE);" 
iki tablo oluşturun

Adım 3: Gerektiğinde

INSERT INTO csv_data SELECT *, 1234.45 /* The C Value */ FROM csv_data_staging; 
TRUNCATE csv_data_staging; 

2'den & 3 adımları tekrarlayın.

+0

Ama aynı tabloya başka bir metin dosyası eklemek istersem, fakat farklı c ister miyim? – Anh