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.
答案 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根据需要。