Как добавить значения long long в базу данных из файла CSV - PullRequest
0 голосов
/ 27 апреля 2019

Веб-приложение, основанное на моем узле, просит пользователя загрузить файл в формате csv. Файл загружен с использованием метода хранения BLOB-объектов. Но теперь я не могу импортировать файл непосредственно в базу данных postgres, так как таблица содержит идентификатор столбцов, время создания, долгота, долгота, в то время как файл CSV содержит только широту и длину информации. Таблица может содержать предыдущие значения по этой причине, я думаю, импорт может не работать, и я думаю, вставка является единственным вариантом.

Пожалуйста, помогите мне решить эту проблему.

Ответы [ 2 ]

2 голосов
/ 27 апреля 2019

Сначала следует импортировать данные lat / long во временную таблицу.
Если файл lat_long.csv имеет следующую структуру:

lat, long
41.99646, 21.43141
40.24555, 20,24536
39.24152, 25.263634

Затем вы можете создать временную таблицу:

CREATE TABLE lat_long_temp (lat DECIMAL, long DECIMAL);

И импортируйте данные в таблицу с помощью следующей команды:

COPY lat_long_temp FROM 'path-to-the-file' CSV HEADER DELIMITER ',';

Где path-to-the-file заменяется путем к файлу lat_long.csv.

После этого вы можете запросить эту таблицу и добавить результаты в таблицу, добавив значение для столбца created_time.

Итак, если ваша таблица результатов выглядит следующим образом:

CREATE TABLE result_table (
  id BIGSERIAL PRIMARY KEY,
  created_time TIMESTAMP,
  latitude DECIMAL,
  longitude DECIMAL
);

Вы можете вставить данные из таблицы lat_long_temp с помощью следующего запроса:

INSERT INTO result_table (created_time, latitude, longitude)
    SELECT now(), lat, long
    FROM lat_long_temp;

Обратите внимание, что я предположил, что ваш столбец ID является столбцом с автоинкрементом, и поэтому нет необходимости устанавливать значение для этого столбца.Если ваш ID не сгенерирован автоматически, вам придется добавить значение в оператор вставки и для этого столбца.

0 голосов
/ 28 апреля 2019

Если другой столбец имеет значения по умолчанию или заполнен триггерами, вы можете скопировать только столбцы lat / long из файла CSV:

COPY my_table(latitude, longitude) 
FROM 'path-to-the-file' CSV HEADER DELIMITER ',';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...