postgresQL 之大对象操作示例_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1965 | 回复: 0   主题: postgresQL 之大对象操作示例        下一篇 
wongz
注册用户
等级:新兵
经验:46
发帖:55
精华:0
注册:2011-8-6
状态:离线
发送短消息息给wongz 加好友    发送短消息息给wongz 发消息
发表于: IP:您无权察看 2015-4-10 10:35:50 | [全部帖] [楼主帖] 楼主

PostgreSQL\8.3\bin>psql -U postgres


用户 postgres 密码:
欢迎来到 psql 8.3.4,这是 PostgreSQL 互动式文字终端机。
键入: \copyright 显示发行条款
  \h 显示 SQL 命令的说明
  \? 显示 pgsql 命令的说明
  \g 或者以分号(;)结尾以执行查询
  \q 退出

 postgres=# create table x_lo (item varchar(64),lo oid);
CREATE TABLE
postgres=# \d


              关联列表
架构模式 |         名称       | 型别 | 拥有者

----------+-------------------------------+--------+----------


public | x_lo               | 资料表 | postgres

(1 笔资料列)
postgres=# \d x_lo


   资料表 "public.x_lo"
栏位 |    型别    | 修饰词

-----+-----------------+--------
item | character varying(64) |
lo | oid         |
postgres=# insert into x_lo(item,lo)
postgres-# values('YodaoDict.exe',lo_import('D:\\YodaoDict.exe'));
INSERT 0 1
postgres=# insert into x_lo(item,lo)
postgres-# values('wolf.jpg',lo_import('D:\\wolf.jpg'));
INSERT 0 1
postgres=# insert into x_lo(item,lo)
postgres-# values('windows map.png',lo_import('D:\\windows map.png'));
INSERT 0 1
postgres=# insert into x_lo(item,lo)
postgres-# values('windows server 2008 R2 x64.txt',lo_import('D:\\windows server 2008 R2 x64.txt'));
INSERT 0 1
postgres=# \lo_list


  大型物件

ID  | 描述

-------+------
23090 |
23091 |
23092 |
23093 |
23094 |
(5 笔资料列)
postgres=# select * from x_lo;
item       | lo
--------------------------+-------
YodaoDict.exe        | 23090
wolf.jpg          | 23092
windows map.png         | 23093
windows server 2008 R2 x64.txt | 23094
(4 笔资料列)
postgres=# select lo_export(lo,'D:\\xtest\\'||item) from x_lo;
lo_export
-----------
1
1
1
1
(4 笔资料列)
postgres=# \lo_export(23091,'D:\\xtest\\')


      资料库列表

 名称    | 拥有者 | 字元编码

--------------+--------+----------
iWealthFount | lyc   | UTF8
postgres   | postgres | UTF8
template0  | postgres | UTF8
template1  | postgres | UTF8
(4 笔资料列)


\l:忽略多余的参数 "o_export(23091,'D:"

无效的命令 \,用 \? 显示说明。

postgres=# \lo_list

 大型物件

ID | 描述

-------+------

23090 |

23091 |

23092 |

23093 |

23094 |

(5 笔资料列)

postgres=# \lo_unlink 23091
lo_unlink 23091
postgres=# \lo_import 'D:\\xtest\\wolf.jpg' 'wolf.jpg'
lo_import 23095
postgres=# \lo_list


  大型物件

ID  |  描述

-------+----------
23090 |
23092 |
23093 |
23094 |
23095 | wolf.jpg
(5 笔资料列)
postgres=# insert into x_lo(item,lo)
postgres-# values('windows map.png',lo_import('D:\\windows map.png' 'windows map.png'));


错误: 语法错误 在 "'windows map.png'" 或附近的

--看来这样行不通!
postgres=# select item,lo_export(lo,'D:\\xtest\\'||item) from x_lo;
item      | lo_export
-------------------------+-----------
YodaoDict.exe      |    1
wolf.jpg         |    1
windows map.png     |     1
windows server 2008 R2 x64.txt |    1
(4 笔资料列)
postgres=# select item,lo_unlink(lo) from x_lo;
item      | lo_unlink
-------------------------+-----------
YodaoDict.exe     |    1
wolf.jpg        |    1
windows map.png   |     1
windows server 2008 R2 x64.txt | 1
(4 笔资料列)
postgres=# \lo_list


  大型物件

ID  |  描述

-------+----------
23095 | wolf.jpg
(1 笔资料列)
postgres=# \lo_unlink 23095
lo_unlink 23095
postgres=# \lo_list


大型物件

ID | 描述

----+------
(0 笔资料列)


【引文】PostgreSQL 8.0.0 文档24.

8.4. 服务器端函数

还有一些对应上面那些客户端函数的服务器端函数,可以在 SQL 命令里使用; 实际上,大多数客户端函数都只是服务器端函数的等效接口。这些服务器端函数中, 通过 SQL 命令调用的实际有用的是 lo_creat, lo_unlink, lo_import,和 lo_export。 下面是一些例子:

CREATE TABLE image ( name text, raster oid);SELECT lo_creat(-1); -- 返回新创建的空的大对象的 OIDSELECT lo_unlink(173454); -- 删除 OID 为 173454 的大对象INSERT INTO image (name, raster) VALUES ('beautiful image', lo_import('/etc/motd'));SELECT lo_export(image.raster, '/tmp/motd') FROM image WHERE name = 'beautiful image';


服务器端的 lo_import 和 lo_export 函数和客户端的那几个有着显著的不同。这辆个函数在服务器的文件系统里读写文件, 使用数据库所有者的权限进行。因此,只有超级用户才能使用他们。相比之下, 客户端的输入和输出函数在客户的文件系统里读写文件,使用客户端程序的权限。 客户端函数可以由任何PostgreSQL用户使用。

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论