Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2023, 11:48   #1
dbalor
Форумчанин
 
Аватар для dbalor
 
Регистрация: 06.09.2016
Сообщений: 199
Вопрос postgresql чтение файла

есть csv файл, в функции pgplsql прочитать этот файл и создать на его основе таблицу(заголовок csv файла), и затем заполнить эту таблицу данными из этого csv файла.

Как это сделать средствами plpgsql ? Если нельзя то какими средствами можно это реализовать в PostgreSQL ?
dbalor вне форума Ответить с цитированием
Старый 23.05.2023, 16:50   #2
Килобайт
Новичок
Пользователь
 
Регистрация: 23.05.2023
Сообщений: 13
Лампочка

Для чтения CSV файла в PL/pgSQL можно использовать встроенные функции PostgreSQL. Вот пример кода для создания таблицы на основе CSV файла:

Код:
```
CREATE OR REPLACE FUNCTION create_table_from_csv(csv_path TEXT, table_name TEXT)
RETURNS VOID AS $$
DECLARE
  headers TEXT[];
BEGIN
  EXECUTE format('CREATE TABLE %I (%s)', table_name, headers);
  EXECUTE format('COPY %I FROM %L DELIMITER '','' CSV HEADER', table_name, csv_path);
END;
$$ LANGUAGE plpgsql;

```
В этом примере функция
Цитата:
`create_table_from_csv`
принимает аргументы
Цитата:
`csv_path`
, который содержит путь к CSV файлу, и
Цитата:
`table_name`
, который содержит имя таблицы, которую нужно создать. Функция сначала создает пустую таблицу с заголовками столбцов из CSV файла, а затем заполняет ее данными из CSV файла с помощью команды
Цитата:
`COPY`
.

Если вы хотите использовать другие средства для чтения CSV файлов, можно воспользоваться расширением PostgreSQL, таким как
Цитата:
`file_fdw`
или
Цитата:
`csv_fdw`
.

Например, для чтения CSV файла с помощью
Цитата:
`csv_fdw`
, можно использовать следующий код:

Код:
```
CREATE EXTENSION IF NOT EXISTS file_fdw;
CREATE SERVER csv_server FOREIGN DATA WRAPPER file_fdw;
CREATE FOREIGN TABLE csv_table (column1 TYPE, column2 TYPE, ...) SERVER csv_server OPTIONS (format 'csv', filename '/path/to/csv/file.csv', header 'true', delimiter ',');

```
Здесь вы создаете сервер
Цитата:
`csv_server`
, который использует расширение
Цитата:
`file_fdw`
. Затем вы создаете внешнюю таблицу
Цитата:
`csv_table`
, которая ссылается на CSV файл и определяет столбцы и настройки формата. Эта таблица может быть использована для чтения данных из CSV файла и выполнения операций SQL над ними.
Килобайт вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OS windows 7 ( Восстановление данных PostgreSQL после потери pg_control ) - PostgreSQL LWHS4356 SQL, базы данных 0 18.07.2018 14:56
PostgreSQL - чтение... VintProg SQL, базы данных 10 30.09.2012 19:21
Чтение из файла (С++) Bullrock Помощь студентам 6 03.05.2012 02:03
Чтение файла в UTF-8(без BOM) Cats_foot Visual C++ 10 06.12.2011 17:27
Чтение из файла Amen БД в Delphi 2 09.12.2008 10:40