全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2600
推到 Plurk!
推到 Facebook!

各位有遇過這個PG-Bytea的問題嗎

答題得分者是:multics
kevin2004
資深會員


發表:18
回覆:463
積分:416
註冊:2005-05-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-02-06 18:00:35 IP:61.219.xxx.xxx 訂閱
各位大大:
小弟這幾個星期都在玩Blob存資料庫的問題。小弟試過MSSQL及 Access均很順利,可是試到PostgreSQL時就老是出狀況。小弟是一個個克服過來,可是最近又碰到了牆了。
小弟用PostgreSQL-Bytea存BlobDAta,如mdb/mp3/jpg/doc等檔案,小弟試了好幾天,是可以存進去,可是轉出來時老是無法使用,經研究發現它的體積會自動長大,且會以3.31的比率增加。這轉出來檔當然是不能用了。而且我用BlobField.BolbSize去看資料庫中的存檔大小就是這個轉出的Size,這表示是在存入時出了問題。這要如何處理?各位有類似的經驗嗎?
------
Kevin
multics
一般會員


發表:0
回覆:6
積分:11
註冊:2007-01-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-02-07 20:51:45 IP:61.219.xxx.xxx 訂閱
我猜你是用pgDDBC,你可以把DSN的Page1的Commlog打勾,去Trace看看。
沒問題後,這個勾要取消,否則速度會很受影響。這在你處理BinaryData時會特別明顯。
------
Multics
kevin2004
資深會員


發表:18
回覆:463
積分:416
註冊:2005-05-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-02-08 07:25:09 IP:61.231.xxx.xxx 訂閱
謝謝老哥的回復,小弟正照老哥講的在研究中。沒想到可以這樣來查看AP與DB通訊的過程。
出來的訊息真是一大串,小弟正加緊研讀中。結果再來報告。謝謝啦。
------
Kevin
kevin2004
資深會員


發表:18
回覆:463
積分:416
註冊:2005-05-29

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-02-08 12:08:59 IP:61.231.xxx.xxx 訂閱
試了一早上,沒有頭緒,那位大哥可以來點提示嗎?
------
Kevin
multics
一般會員


發表:0
回覆:6
積分:11
註冊:2007-01-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-02-08 20:27:11 IP:61.219.xxx.xxx 訂閱
試試:
postgresql.conf設這兩個項目:
escape_string_warning = off
standard_conforming_strings = off


------
Multics
kevin2004
資深會員


發表:18
回覆:463
積分:416
註冊:2005-05-29

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-02-09 07:33:46 IP:61.231.xxx.xxx 訂閱
太感謝老哥了,果然可以了。小弟昨晚照老哥講的試了幾台電腦,均OK 了。小弟以新寫的可以在MSSQL/Access上順利執行的八千行Blob資料處理的函式來試用在PostgreSQL上,完全正常,加密解密壓縮解壓縮存入轉出,通通OK。花了我三四個星期砍了舊版內一萬五千行程式碼,及新寫了八千行新程式碼,逐個測試,竟全部過關。太感謝,太感謝了。
小弟原先處理Delphi-postgresqlODBC-bytea-BlobFieldType老是型態不合的問題時,也照前輩講的設了escpae_string_warning而將前述問題解決了,但一時手賤竟將內定為off的standard_conforming_strings給改為on了。難怪我到處找資料及翻江倒海的試,老是試不出來。原來是自己手賤。

哈!哈!哈!問題解決了。

小弟叩謝。

哈!哈!哈!問題解決了。

------
Kevin
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-02-09 08:08:50 IP:60.248.xxx.xxx 訂閱
to kevin2004

可以說明一下你所使用的環境、版本與 Server 及 pgODBC 的相關設定嗎?
------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
multics
一般會員


發表:0
回覆:6
積分:11
註冊:2007-01-21

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-02-09 21:25:20 IP:61.219.xxx.xxx 訂閱
To Kevin2004兄:
小事情,你太客氣了,只是順手幫一下而已。現在玩PostgreSQL的人不多,能幫忙,當然要幫一下。講到PG,以往還有個資庫網及基哥的Delphi俱樂部,可以讓同好們在一起討論一下,現在想要找個地方聊一下PG都很難了。
今天白天忙一整天,晚上因為又一個用pg的客戶DB滿5G,大家才出去吃個飯慶祝一下。回到家理才看到你的回文。
你太客氣了。
公司裏有用Bytea管合約資料客戶資料及客服系維記錄等,也有一些類似功能的系統在運作。你碰過的問題,我們當初也多碰到過,只是分享一下經驗而矣。
恭喜你了。
------
Multics
kevin2004
資深會員


發表:18
回覆:463
積分:416
註冊:2005-05-29

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-02-10 08:10:10 IP:61.231.xxx.xxx 訂閱
謝謝Multics前輩,太感謝了。小弟當初學PG也是在基哥的Delphi俱樂部學的,只可惜這個站關站了。有時真是很不方便。
謝謝前輩金口,結束小弟這一個多月來不眠不休的魔鬼營考驗。以後還請多指點。謝謝了。
------
Kevin
kevin2004
資深會員


發表:18
回覆:463
積分:416
註冊:2005-05-29

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-02-10 08:19:14 IP:61.231.xxx.xxx 訂閱
致雪龍前輩:
抱歉,小弟昨日驗收案子,一整天沒有上來看看,沒有回文。今日週末要去拜望準泰山泰水,亂緊張一把,待明日回來再將這一個多月來測試心得經驗報告及回饋一下。
小弟兩年前在基哥的Delphi俱樂部剛玩PG時,就常承雪龍前輩的幫忙提攜,小弟十分感謝。Ktop是我輩生命線,雪龍前輩及其他各位前輩在此諸多付出,小弟與大家一般均萬分感激。
總算可以去拜望準泰山泰水了,真是好緊張。
------
Kevin
kevin2004
資深會員


發表:18
回覆:463
積分:416
註冊:2005-05-29

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-02-12 07:21:30 IP:61.231.xxx.xxx 訂閱
抱歉了,今天才回。
我略過不談Fedora的環境,那變數太多,不如講Win-PG。Win-PG-8.X真是超好簡單的,只要幾個點作對了,保證一點即通。
我用的版本是:
1.PostgreSQL-Win-8.2.1-1
2.pgsqlODBC-Win--08_02_0200
3.pgAdmin1.62﹝這不必特殊去抓及裝,只要你的PostgreSQL裝好了,它就有了﹞
// 如果你有興趣,另裝Apache PHPpgAdmin也是很不錯的
4.Windows:至少要2K/XP以上。因為Win0-PG需要用到NTFS的保全功能,所以檔案系統須要NTFS,FAT32是不可以裝的。
5.Delphi:我現還在用 D7,我還沒移上來。

------
Kevin
kevin2004
資深會員


發表:18
回覆:463
積分:416
註冊:2005-05-29

發送簡訊給我
#12 引用回覆 回覆 發表時間:2007-02-12 07:45:19 IP:61.231.xxx.xxx 訂閱
整個程序如下:
1.先將舊的Win-pg資料庫備份出來,將舊的設定先備一份及印出來。
2.UnInst-舊Win-PG
3.將舊的pgsqlODBC-DSN內容先記下來再先殺掉。不先殺這些DSN,等下移除了舊版的psqlODBC要再來殺這些時會殺不掉的。。移除舊的pgsqlODBC。
4.先去下載:postgresql-8.2.1-1﹝zip﹞,解壓縮到硬碟某個目錄,執行已解開的postgresql-8.2-int。這時除了一個地方外﹝見後﹞,其餘大都是按Enter即可。
5.設定控制檔﹝見後﹞啟動WinPG,及容許外機聯接。
6.下載:psqlodbc-08_02_0200,解壓縮後點已壓出的psqlODBC進行Driver安裝。
7.設Win-PG環境與控制設訂,開Win-PG資料庫,建User與群組。如果方便的話,將線上手冊印出來看看吧,篇幅不少,可是會省你以後很多事。資料庫可只開個頭就好了,等會建好ODBC及以AP聯上來後,再叫AP建之。或由Win-PG8.0舊DB移回來均可。Win-PG在8.X以前須要用到CygWin,不好用,我沒作過7.X版的DB還原經驗。
7.設各AP的psqlODBC-DSN:這是成敗關鍵。psqlODBC在8.0.2與8.0的設定有點不同,小弟去天瓏查原文書在那看了好幾鐘頭,光是ODBC設定就有一整章42頁。這裏如果沒設好,會有問題的。想當年初玩PG時,光是要設這個聯PG就花了我好幾個月的時間,天天愁雲慘霧,希望渺茫。不過,等下,各位照我講的設就可以了,保證三下兩下輕鬆攪定。


小弟要先出門上班了。回來再續,抱歉了。
------
Kevin
kevin2004
資深會員


發表:18
回覆:463
積分:416
註冊:2005-05-29

發送簡訊給我
#13 引用回覆 回覆 發表時間:2007-02-15 20:16:57 IP:61.231.xxx.xxx 訂閱
小弟這兩天又碰到鬼了,在客戶那裝幾台FedoraServer竟然多數都出問題了。平常裝了N台也沒遇到過,真氣死人了。
還是回頭來將這篇寫完吧。
小弟今天找了一台乾淨的電腦重新Win-PG-8.2及psqlODBC。將設訂記如下:

主題:在WindowS-2K/XP-NTFS上裝PostgreSQL8.2
0.如有舊的Win-PG,我是先UnInst它。
1.下載解開後,執行postgresql--8.2.msi
2.以下多只是按Enter就可以了,簡單的簡直是設計給給白癡用的。
3.要設定postgres的密碼。這個User會被自動加到你的電腦的User中。
4.Encoding內定是SQL_ASCII,這將會是你將來開新資料庫時的內定編碼值﹝但仍可選﹞。我順手會將它改為UTF-8,以免將來開資料庫時忘了改了,就麻煩了。
5.Enable Contrib modules這巷不要改它,將來如要新加時,還可以再加。這裏別理它。
以上幾乎全是按Enter就好了。


------
Kevin
kevin2004
資深會員


發表:18
回覆:463
積分:416
註冊:2005-05-29

發送簡訊給我
#14 引用回覆 回覆 發表時間:2007-02-15 20:29:00 IP:61.231.xxx.xxx 訂閱
續上。

主題:啟用Win-PG8.2及建資料庫與加User。
0.在Win-PG8.0與8.2不同之處,是於8.0時,你還要加個Group,在8.2則只要加User即好了。
1.先進網路芳鄰,查看這台PC的IP。因為這是PG-Server所在的PC,所以IP不可設為動態取得。需為固定者。記下這個IP值,等下你會用到它。
2.進PGAdmin1.62。程式集->postgresql8.2->PgAdmin。這時會問你密碼,就是你在安裝時給的那個值啦。記得輸密碼時,萬萬不可句選它的上方『記住密碼』的CheckBox,你句了以後,你的PG就沒密碼保護了,就是不設防的啦。
3.加個User,將超級用護、允許建新用戶、允許建資料庫物件、能修改分類目錄等均勾起來。其它的就不用管它了。
4.開個新資料庫,右點資料庫那項,選開新資料庫。設資料庫名字、Owner為你剛加的那個傢伙、編碼我都是設為UTF-8

------
Kevin
kevin2004
資深會員


發表:18
回覆:463
積分:416
註冊:2005-05-29

發送簡訊給我
#15 引用回覆 回覆 發表時間:2007-02-15 20:54:06 IP:61.231.xxx.xxx 訂閱
續上。

主題:裝psqlODBC8.2及設新ODBC-DSN
0.如有舊psqlODBC8.0及相關的DSN,記得先砍DSN再移除psqlODBC8
1.下載,解壓縮,執行安裝...
2.加ODBC-DSN,系統管理工具->ODBC,在系統資料來源那頁加新的ODBC-DSN。別加錯了,是系統資料來源頁。
3.Add,可選postgresql-Ansi或另一個Postgresql-???﹝身邊幾台電腦都在裝Fedora,沒法查﹞均可。我多設為postgresql-ANSI。我試過選那個好像都沒關係,而且隨時可以在DSN重設回來。
4.DataSource﹝此DSN-name,如AccountDB_PG﹞
DataBase﹝如AccountDB﹞
Server﹝就是它所在PC的ip啦﹞
Port﹝5432,這個不要動它﹞
User﹝就是你剛才在PgAdmin加的那個傢伙啦。這個也可以不設,可直接由你的AP給就好了﹞
PassWord﹝這也讓他空下來﹞
5.點DataSource-BitBtn:選Page2,千萬記得將bytea as lo要勾起來。在PG中的bytea-fieldtype,就是你在MSSQL/Oracle/MySQL/Access中的那個Blob欄。bytea上限是1GB,可不要拿M$等的兩G或四G來對Bytea嗤之以鼻。老實說1G真是已很夠用了。如果一個檔壓縮了以後還大過一G,那它鐵定不適合放放在資料庫中。通常一個二、三十頁的合約書DOC檔壓後至多也只剩二、三十K了。可別銹斗玩起NG來。lo在pg就是舊的larget object,這是可以大過一G的,不過這要搭配OID來用,想想要超過1G,小弟就敬謝不敏了。
6.其餘的ODBC-DSN設定就用內定值,為省篇幅,小弟就不多說了。
存起來就好了。
------
Kevin
kevin2004
資深會員


發表:18
回覆:463
積分:416
註冊:2005-05-29

發送簡訊給我
#16 引用回覆 回覆 發表時間:2007-02-15 20:59:20 IP:61.231.xxx.xxx 訂閱
續上。

主題:開放你的Win-PG以讓你的AP及別的電腦上的AP可以聯上來。
1.編修pg_hba.conf:程式集->PostgreSQL8.2->編修控制檔->edit pg_hba.conf。加一列
host all all YourPC_AP_IP/32 md5
如host all all 192.168.0.101/32 md5
如有別機也要聯上來,那就再多加一列吧

存檔。
------
Kevin
kevin2004
資深會員


發表:18
回覆:463
積分:416
註冊:2005-05-29

發送簡訊給我
#17 引用回覆 回覆 發表時間:2007-02-15 21:07:36 IP:61.231.xxx.xxx 訂閱
續上。

主題:設定可以處理Bytea-Blob存取BinaryData的功能
1.編修postgresql.conf:程式集->PostgreSQL8.2->編修控制檔->edit postgresql.conf。
2.改Connections and Authentication-section,加 listen_addresses = '*'
3.改Version/platform Compatibility加兩行
escape_string_warning = off
standard_conforming_strings = off

別小看這三行,小弟這三行可是花了三四個星期,把手冊全印出來裝釘研讀多次,還去PG姥姥家及Google翻江倒海了好久,最後還是靠Multics前輩指點才過關的。
真是眾裏尋它千百度,衣帶漸寬終不悔,再回頭已百年身。烏乎哀哉。

------
Kevin
kevin2004
資深會員


發表:18
回覆:463
積分:416
註冊:2005-05-29

發送簡訊給我
#18 引用回覆 回覆 發表時間:2007-02-15 21:12:49 IP:61.231.xxx.xxx 訂閱
小弟這兩天在客戶那裝幾套Server,竟然老是出狀況。亂沒面子的。怎會如此不順,真是莫明其妙。
電腦這行飯還真難吃。
------
Kevin
系統時間:2024-05-19 11:47:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!