Intereting Posts
Мой композитор не будет полностью обновлять Laravel 4, он застрял с мастером Я хочу разбиение на страницы на странице параметров плагина wordpress? Уровни оптимизации OPKache PHP – что это такое? Как проверить регулярное выражение с помощью PHP Phalcon и nginx – Framework запускает только indexController перенаправить пользователя после нажатия ссылки на процесс sql? Пустая страница на стороне администратора Opencart Требования не могут быть разрешены к устанавливаемому набору пакетов AWS Cloudfront + Load Balancer, url изменяется с основного домена на субдомен балансировки нагрузки Удалить все повторяющиеся символы в строке? Что заставляет SQL Server возвращать сообщение «Заявление завершено»? Установка ожидающего тона для обработки функции agi Могу ли я отправлять данные на php-страницу с помощью YQL? Перенести проект laravel на новый сервер PHP, отрицающий использование короткой руки "<?"

импортировать CSV-файл в postgres через php на веб-странице

Привет, я пытаюсь создать веб-интерфейс, который позволит пользователям импортировать содержимое CSV-файла в базу данных postgresql. Ниже приведен php-компонент того, что я пытаюсь сделать, однако когда я запускаю, я просто получаю «Проблема с загрузкой ваших данных:» из моей команды die, но без какой-либо другой ошибки.

В этом примере я жестко закодировал значение для файла csv, однако намерение заключается в том, чтобы пользователь указывал на файл csv на своем компьютере или в сетевом расположении.

<?php if ($_POST['submit']) { // attempt a connection $dbh = pg_connect("host=localhost dbname=blah user=user password=pass123"); if (!$dbh) { die("Error in connection: " . pg_last_error()); } // execute query $sql = "COPY personaldetails(name, email, postaladdress, phone, username, password) FROM '../Test/Book1.csv' WITH DELIMITER ',' CSV"; $result = pg_query($dbh, $sql); if (!$result) { die("There was a problem uploading you data: " . pg_last_error()); } echo "Data successfully inserted!"; // free memory pg_free_result($result); // close connection pg_close($dbh); } ?> 

Я ценю любую помощь, которая может быть предложена.

COPY FROM file должен запускаться учетной записью суперпользователя, и это ограничение делает его вообще непригодным для использования в Интернете

Выдержка из документации :

КОПИРОВАНИЕ Именование файла разрешено только для суперпользователей баз данных, поскольку оно позволяет читать или записывать любые файлы, на которые у сервера есть права доступа.

Но PHP обеспечивает поддержку COPY FROM stdin которого нет этого ограничения. Этот пример из документации php показывает, как это делается:

  $conn = pg_pconnect("dbname=foo"); pg_query($conn, "create table bar (a int4, b char(16), d float8)"); pg_query($conn, "copy bar from stdin"); pg_put_line($conn, "3\thello world\t4.5\n"); pg_put_line($conn, "4\tgoodbye world\t7.11\n"); pg_put_line($conn, "\\.\n"); pg_end_copy($conn); 

В случае с файлом вам нужно будет открыть файл с помощью php-функций и pg_put_line() в postgres-соединение с помощью pg_put_line()