Шаг 1: Создайте таблицу, соответствующий файл вы импортируете:
CREATE TABLE csv_data (
colA FLOAT,
colB FLOAT
);
Шаг 2: оболочки, копировать данные в таблицу, используя STDIN , (См this other question, если вам интересно, почему 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;
Edit:
Если вы хотите импортировать более одного файла:
Шаг 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 по мере необходимости.
, а затем после копирования сделайте обновление в столбце c до вашего значения, где столбец c имеет значение NULL. – Bill
Но что, если я хочу добавить еще один текстовый файл в ту же таблицу, но мне нужен другой c? – Anh