Назад | Перейти на главную страницу

Импорт дампа данных с помощью pgAdmin

Я огляделся и нашел следующий код о том, как импортировать дамп данных с помощью pgadmin:

CREATE OR REPLACE FUNCTION db_to_csv(path TEXT) RETURNS void AS $$
  tables RECORD;
gmdeclare
  statement TEXT;
begin
  FOR tables IN 
    SELECT (table_schema || '.' || table_name) AS schema_table
    FROM information_schema.tables t INNER JOIN information_schema.schemata s 
    ON s.schema_name = t.table_schema 
    WHERE t.table_schema NOT IN ('pg_catalog', 'information_schema', 'configuration')
    ORDER BY schema_table
  LOOP
    statement := 'COPY ' || tables.schema_table || ' TO ''' || path || '/' || tables.schema_table || '.csv' ||''' DELIMITER '';'' CSV HEADER';
    EXECUTE statement;
  END LOOP;
  return;  
end;
$$ LANGUAGE plpgsql;

Похоже, это именно то, что мне нужно, поскольку я новичок в базах данных, но разбираюсь в файлах .csv. Проблема в том, что я действительно не знаю, как правильно настроить эту функцию. В определении мне нужно указать язык (в ответе указано, что это plpgsql) и тип возвращаемого значения. Я не уверен, какой должен быть возвращаемый тип. Более того, и это, вероятно, звучит довольно глупо, я хотел бы подтвердить, что я должен заменить TEXT на путь к моему файлу дампа .sql. Спасибо за любую помощь!

Эта функция создает дамп данных, а не импортирует его, что является противоположностью тому, что вы хотите сделать. ТЕКСТ, о котором вы говорите, - это путь к CSV-файлу, который он сгенерирует.

PgAdmin 1.4, похоже, имеет средство восстановления: http://www.pgadmin.org/docs/1.4/restore.html

Если вы пытаетесь импортировать данные в одну таблицу, вы можете щелкнуть правой кнопкой мыши таблицу в PgAdmin и выбрать импорт.

Если вы пытаетесь импортировать данные для всей базы данных и открыты для других вариантов помимо PgAdmin, вы можете использовать psql:

psql -h host -U username dbname < data.dmp