2016-04-04 4 views
0

Я создал базу данных и таблицу.Вставить текстовый файл PostgreSQL через ubuntu?

Table Name (A, B, C)

У меня есть текстовый файл, который отформатирован как:

numA1: NUMB1

numA2: numB2

...

numAn: numBn

Как вставить этот текстовый файл в t он таблицы и установить все строки для столбца C значение? Значение для столбца C должно быть одинаковым во всей таблице.

ответ

0

Проверить COPY:

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

, а затем после копирования сделайте обновление в столбце c до вашего значения, где столбец c имеет значение NULL. – Bill

+0

Но что, если я хочу добавить еще один текстовый файл в ту же таблицу, но мне нужен другой c? – Anh

0

Шаг 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 по мере необходимости.

+0

Но что, если я хочу добавить еще один текстовый файл в ту же таблицу, но мне нужен другой c? – Anh

Смежные вопросы