PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да експортирате пълнотекстови файлове с SQL?

COPY не е предназначен за това. Предназначен е да се справя с таблично структурирани данни, така че не може да работи без някакъв начин за разделяне на редове и колони; винаги ще има някои знаци, които COPY FROM интерпретира като разделители и за които COPY TO ще вмъкне някаква екранираща последователност, ако намери такава във вашите данни. Това не е чудесно, ако търсите общо I/O средство за файлове.

Всъщност сървърите на бази данни не са проектирани за общ вход/изход на файлове. От една страна, всичко който взаимодейства директно с файловата система на сървъра, ще изисква роля на суперпотребител. Ако изобщо е възможно, трябва просто да направите заявка към таблицата, както обикновено, и да се справите с I/O на файла от страна на клиента.

Въпреки това има няколко алтернативи:

  • Вграденият pg_read_file() функция и pg_file_write() от adminpack модул, осигуряват най-директния интерфейс към файловата система, но и двата са ограничени до директорията с данни на клъстера (и не бих препоръчал съхраняването на произволно създадени от потребителя файлове там).
  • lo_import() и lo_export() са единствените вградени функции, за които знам, които се занимават директно с файлов I/O и които имат неограничен достъп до файловата система на сървъра (в рамките на ограниченията, наложени от хост ОС), но интерфейсът за големи обекти не е особено удобен за потребителя ....
  • Ако инсталирате ненадеждния вариант на процедурен език като Perl (plperlu ) или Python (plpythonu ), можете да напишете функции за обвивка за родните I/O рутинни процедури на този език.
  • Няма много неща, които не можете да постигнете чрез COPY TO PROGRAM ако сте достатъчно решени - например можете да COPY (SELECT 1) TO PROGRAM 'mv <source_file> <target_file>' за да заобиколите ограниченията на pg_file_write() - въпреки че това донякъде размива границата между SQL и външните инструменти (и който наследи вашата кодова база вероятно няма да бъде впечатлен...).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. plv8 деактивира функцията за изпълнение и подготовка в eval()

  2. Как да получа списъци с параметри на функции (за да мога да пусна функция)

  3. psycopg2:вмъкване на няколко реда с една заявка

  4. Не може да се отвори връзка, причинена от Този набор от резултати е затворен

  5. django.db.utils.ProgrammingError:връзката app_user не съществува по време на теста на manage.py