यह आपकी बड़ी वस्तु के आकार पर निर्भर करता है। जब आपकी बड़ी वस्तुएं लगभग 500MB से कम होती हैं, तो आपको LOB का उपयोग करने की आवश्यकता नहीं होती है (PostgreSQL शब्द LO का उपयोग करता है), और आप text
का उपयोग कर सकते हैं या varchar
प्रकार - काम varchar
. के समान है . इस आकार के बाद आपको LO API का उपयोग करना चाहिए।
CREATE OR REPLACE FUNCTION writeappend(oid, text)
RETURNS void AS $$
DECLARE
content bytea;
fd int;
BEGIN
content := convert_to($2, getdatabaseencoding());
fd := lo_open($1, 131072);
PERFORM lo_lseek(fd, 0, 2);
IF length(content) <> lowrite(fd, content) THEN
RAISE EXCEPTION 'not all content was written';
END IF;
PERFORM lo_close(fd);
END;
$$ LANGUAGE plpgsql;
postgres=> select lo_creat(-1);
┌──────────┐
│ lo_creat │
╞══════════╡
│ 20653 │
└──────────┘
(1 row)
postgres=> select writeappend(20653, e'Hello\r\n');
┌─────────────┐
│ writeappend │
╞═════════════╡
│ │
└─────────────┘
(1 row)
postgres=> select writeappend(20653, e'Hello\r\n');
...
postgres=> select convert_from(lo_get(20653),getdatabaseencoding());
┌──────────────┐
│ convert_from │
╞══════════════╡
│ Hello\r ↵│
│ Hello\r ↵│
│ │
└──────────────┘
(1 row)
तो आप एलओ एपीआई का उपयोग कर सकते हैं, लेकिन बुनियादी प्रकारों को प्राथमिकता दी जानी चाहिए। इन प्रकारों के लिए सीमाएं आमतौर पर काफी अच्छी होती हैं - और बुनियादी प्रकारों के साथ काम करना बहुत अधिक आरामदायक होता है - कुछ संभावनाओं जैसे कि पूर्ण पाठ के साथ।