通过ubuntu插入PostgreSQL文本文件



我已经创建了一个数据库和一个表。

表名(A、B、C)

我还有一个文本文件,格式如下:

numA1:numB1

numA2:numB2

numAn:numBn

如何将此文本文件插入表中,并将C列的所有行设置为值?整个表中C列的值应该相同。

检查COPY:

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

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

CREATE TABLE csv_data (
    colA FLOAT,
    colB FLOAT
);

步骤2:从shell中,使用STDIN将数据复制到表中。(如果你想知道为什么STDIN是一条路,请看另一个问题。)

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。

最新更新