如何在PostgreSQL的字段中插入文本文件?如何在PostgreSQL的字段中插入文本文件?
我想從本地或遠程文本文件中插入一行字段。
我預計,爲了做到以下類似的gettext)函數(或使用getURL():
%INSERT INTO集合(ID,路徑,內容)VALUES(1, '在/ etc/MOTD' ,gettext('/ etc/motd'));
-S。
如何在PostgreSQL的字段中插入文本文件?如何在PostgreSQL的字段中插入文本文件?
我想從本地或遠程文本文件中插入一行字段。
我預計,爲了做到以下類似的gettext)函數(或使用getURL():
%INSERT INTO集合(ID,路徑,內容)VALUES(1, '在/ etc/MOTD' ,gettext('/ etc/motd'));
-S。
感謝您的提示。我發現了另一個內置函數的答案。 您需要擁有超級用戶權限才能執行該操作!而不是
-- 1. Create a function to load a doc
-- DROP FUNCTION get_text_document(CHARACTER VARYING);
CREATE OR REPLACE FUNCTION get_text_document(p_filename CHARACTER VARYING)
RETURNS TEXT AS $$
-- Set the end read to some big number because we are too lazy to grab the length
-- and it will cut of at the EOF anyway
SELECT CAST(pg_read_file(E'mydocuments/' || $1 ,0, 100000000) AS TEXT);
$$ LANGUAGE sql VOLATILE SECURITY DEFINER;
ALTER FUNCTION get_text_document(CHARACTER VARYING) OWNER TO postgres;
-- 2. Determine the location of your cluster by running as super user:
SELECT name, setting FROM pg_settings WHERE name='data_directory';
-- 3. Copy the files you want to import into <data_directory>/mydocuments/
-- and test it:
SELECT get_text_document('file1.txt');
-- 4. Now do the import (HINT: File must be UTF-8)
INSERT INTO mytable(file, content)
VALUES ('file1.txt', get_text_document('file1.txt'));
你不能。您需要編寫一個程序來讀取文件內容(或URL)並將其存儲到所需的字段中。
最簡單的方法是使用其中一種可嵌入的腳本語言。下面是使用plpythonu一個例子:
CREATE FUNCTION gettext(url TEXT) RETURNS TEXT AS $$ import urllib2 try: f = urllib2.urlopen(url) return ''.join(f.readlines()) except Exception: return "" $$ LANGUAGE plpythonu;
一個缺點,以這個例子功能是其對urllib2的依賴,意味着你必須用「文件:///」的URL訪問本地文件,如:
選擇gettext的( '文件:///等/ MOTD');
使用COPY INSERT
的
它要求超級用戶能創建此功能。更好地使用客戶端功能。 – bortzmeyer 2009-05-29 11:27:30
我在原始問題中看不到任何東西,導致我相信他不是。 – TML 2009-05-31 03:17:25