Insert a textfile PostgreSQL through ubuntu?

时间:2016-04-04 18:57:27

标签: postgresql

I have created a database and a table.

Table Name( A, B, C)

I also have a text file that is formatted like:

numA1:numB1

numA2:numB2

...

numAn:numBn

How do I insert this text file into the table and set all row for column C to a value? The value for Column C should be the same throughout the table.

2 个答案:

答案 0 :(得分:0)

检查COPY

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

答案 1 :(得分:0)

步骤1:创建一个与您要导入的文件匹配的表:

CREATE TABLE csv_data (
    colA FLOAT,
    colB FLOAT
);

步骤2:从shell中,使用STDIN将数据复制到表中。 (如果你很好奇为什么要使用STDIN,请参见this other question。)

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

步骤3:添加不在数据文件中的列,并为其指定默认值。

ALTER TABLE csv_data ADD COLUMN colC FLOAT DEFAULT 1234.56;

修改

如果要导入多个文件:

第1步:创建两个表:

CREATE TABLE csv_data_staging (
    colA FLOAT,
    colB FLOAT
);

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

第2步:

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

第3步:

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

重复步骤2& 3根据需要。