postgresql 如何批量更新oracle数据库批量更新,有这么难吗

当前访客身份:游客 [
当前位置:
一个已经存在的数据库,怎么快速赋予一个用户对这个数据库下所有对象的所有操作权限?
现在的问题是这样的,比如赋予user对database2所有权限,但是在psql中只可以connect并不能操作数据库中的表……
共有2个答案
<span class="a_vote_num" id="a_vote_num_
grant xxx on all tables in schema xxx
--- 共有 2 条评论 ---
grant all on all tables in schema public to xxx
(8个月前)&nbsp&
grant all on all tables in schema to user
(8个月前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
我这里有个批量更新用户表的所有者的,你用超级管理员将这些表的拥有者改掉就有权限了。
--- 共有 2 条评论 ---
Postgresql目前好像没有提供批量更新的方法,但表的所有者应该是拥有所有权限,不需要再重新设置权限了吧,这个我没做过具体测试。
(8个月前)&nbsp&
所以最终还是要一个个表权限挨个改,不能直接改最上层的database,改了下面的表的权限还是没改,是吧?
(8个月前)&nbsp&
更多开发者职位上
有什么技术问题吗?
cevin的其它问题
类似的话题Windows下Postgresql数据库的下载与配置方法
投稿:mdxy-dxy
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Windows下Postgresql数据库的下载与配置方法 ,需要的朋友可以参考下
注意下载的是二进制版,不是带Windows Installer的。
执行下列步骤前,暂作以下假定:
PostgreSQL拟装在d:\postgresql
数据库以后拟存放在d:\postgresql\data
首先下载postgresql-9.2.4-1-windows-x64-binaries.zip最新版待用,下列步骤达到手工安装好PostgreSQL,初始化数据库,将PostgreSQL注册为服务。
1、PostgreSQL.zip解压至d:\postgresql后,创建一个data目录;
2. 设置环境变量,编辑批处理文件 配置环境变量.vbs(永久生效)
a) 内容如下
on error resume next
set sysenv=CreateObject("WScript.Shell").Environment("system") '系统环境变量的数组对象
Path = CreateObject("Scripting.FileSystemObject").GetFolder(".").Path
sysenv("PGHOME")="D:\pgsql"
sysenv("PGHOST")="localhost"
sysenv("Path")=sysenv("PGHOME")+"\"+sysenv("Path")
sysenv("PGLIB")=sysenv("PGHOME")+"\lib"
sysenv("PGDATA")=sysenv("PGHOME")+"\data"
wscript.echo "PostgreSQL环境变量安装成功!不需要重新启动计算机啊!"
b) 执行如下:
3、在空白处按住shift点击鼠标右键,新开一个cmd窗口,并cd 至d:\postgresql\bin ;
4. 初始化并创建数据库(一次即可)
initdb.exe -D d:\postgresql\data -E UTF-8 --locale=chs -U postgres -W
-D :指定数据库簇的存储目录E:\pgsql\data
-E :指定DB的超级用户的用户名postgres
--locale:关于区域设置(chinese-simplified-china)
-U :默认编码格式chs
-W :为超级用户指定密码的提示
4. 启动数据库
注:若未注册为系统服务,则需每次手动启动,否则pgadmin3连接数据库失败
pg_ctl -D d:\postgresql -l logfile start
显示如下:
启动后,在数据库安装的主目录下生成一个logfile文件:D:\postgresql\logfile
5. 注册为win8系统服务
注:需管理员权限方可
pg_ctl register -N PostgreSQL -D D:\postgresql\data
查看已经注册的服务:win+R在弹出的运行框中,输入:services.msc,如下:
net start PostgreSQL 查看是否启动:命令行下输入tasklist
netstat –an 可以查看所有和本地计算机建立连接的IP 卸载服务:同样需要管理员权限,两种方式
1) pg_ctl unregister –N PostgreSQL (win8)
2) sc delete PostgreSQL (PostgreSQL)
6. 配置pgAdmin3客户端
目录为D:\postgresql\bin\ pgAdmin3,双击,配置
7. 连接数据库成功
如何让postgresql支持远程登录呢?
只需要在服务器端配置
修改两个文件:
postgresql.conf
pg_hba.conf
-----------------
比如环境中db server ip为10.10.3.5,
客户端的ip为10.10.3.5
在postgresql.conf文件添加:
listen_addresses = '*'
在pg_hba.conf文件添加:
host all all 10.10.3.1/24 trust
24表示掩码为255.255.255.0,所以表示对这个子网的所有IP开放了。
就可以在10.10.3.5上访问10.10.3.5了。
完成后执行一下
C:\Windows\System32&net stop PostgreSQL
C:\Windows\System32&net start PostgreSQL
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具> postgresql如何批量更新数据库,有这么难吗有一组数据:idname------------
postgresql如何批量更新数据库,有这么难吗有一组数据:idname------------
qiuxueqinghfah & &
发布时间: & &
浏览:114 & &
回复:2 & &
悬赏:0.0希赛币
postgresql 如何批量更新数据库,有这么难吗!!!有一组数据: &
name--------------------------- &
john前台已使用 json 对上组数据进行存储 {id:s-001, name:jack ...... }问题一:如何把这组数据批量插入到数据库,最好使用存储过程 & 问题二:postgreSQL 如何把 &a,d,2ed,we4e,dag& 解析为一个 array&
问题2:select string_to_array('a,d,2ed,we4e,dag',',')--结果
-------------------- &{a,d,2ed,we4e,dag}(1 行记录)
qiuyao & &
& & (0)(0)
问题1:存储过程不能直接解析json,因此最好前台把json解析成字符串,传入存储过程进行批量更新。如解析成如下的字符串:&s-001,jack:s-002,tom:s-005,john&--使用postgresql的函数进行行列转换插入到目标的表之中insert into 目标表select (string_to_array(str,','))[1],
(string_to_array(str,','))[2]& from unnest(string_to_array('s-001,jack:s-002,tom:s-005,john',':')) as t(str);qiuyang & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&postgresql备份和恢复
postgresql批量导入导出数据到文件(copy to / copy from)
postgresql
备份数据库:pg_dump -h
-U root demo02 & /home/arno/dumps/demo02.bak恢复数据库:psql -h localhost -U root -d demo && demo.bak备份表:pg_dump -h localhost -U root demo02 -t books & /home/arno/dumps/books.bak恢复表:psql -h localhost -U root -d demo -t books && /home/arno/dumps/books.bakpsql copy to/from用法:1. 需要使用postgres超级用户登陆数据库&& psql -U postgres -d demo022. 保存/读取的需要赋予postgres用户可读写的权限3. 导出表中数据到文件&& copy books to '/opt/PostgreSQL/9.5/data/xxx.csv' with CSV;4. 导入文件内容到数据库(增加不是覆盖,以前表中数据保留)&& copy books(id,title) from '/opt/PostgreSQL/9.5/data/xxx.csv' delimiter as ',' csv quote as '"';4664人阅读
轻松解决PostgreSQL数据库的操作问题
昵称: 〇〇 &时间:
21.2. 字符集支持PostgreSQL 里面的字符集支持你能够以各种字符集存储文本, 包括单字节的字符集,比如 ISO 8859 系列和
EUC (扩展 Unix 编码 Extended Unix Code),UTF-8 和 Mule
国际编码。所有字符集都可以在服务器上透明地使用。 (如果你使用了来自其它数据源地扩展函数,那么它取决于他们是否正确地书写了代码。)
缺省的字符集是在使用 initdb
初始化你的 PostgreSQL 数据库集群的时候选择的。 在你的使用 createdb
或者 SQL 命令 CREATE DATABASE
的时候是可以覆盖这个缺省的。因此,你可以有多个数据库,每个都有不同的字符集。
21.2.1. 支持字符集编码
显示了可以用在服务器的字符集。
Table 21-1. 服务器字符集
[tr]名字描述语言字节/字符别名[/tr]
, Windows950
扩展的 UNIX 代码-CN
扩展的 UNIX 代码-JP
扩展的 UNIX 代码-KR
扩展的 UNIX 代码-TW
繁体中文,中国台湾省
扩展的国家标准
, Windows936
ISO_8859_5
ISO 8859-5, ECMA 113
拉丁/西里尔语
ISO_8859_6
ISO 8859-6, ECMA 114
拉丁/阿拉伯语
ISO_8859_7
ISO 8859-7, ECMA 118
拉丁/希腊语
ISO_8859_8
ISO 8859-8, ECMA 121
拉丁/希伯莱语
韩语(Hangul)
ISO 8859-1, ECMA 94
ISO 8859-2, ECMA 94
ISO 8859-3, ECMA 94
ISO 8859-4, ECMA 94
ISO 8859-9, ECMA 128
ISO 8859-10, ECMA 144
北欧,日耳曼语(Nordic)
ISO 8859-13
波罗的海语(Baltic)
ISO 8859-14
凯尔特语(Celtic)
ISO 8859-15
带有欧洲语系和语调的 LATIN1
ISO 8859-16, ASRO SR 14111
罗马尼亚语(Romanian)
MULE_INTERNAL
Mule 国际编码
多语种 Emacs
, ShiftJIS
, Windows932
未声明(见文本)
统一韩语(Hangul)编码
, Windows949
Unicode, 8-bit
Windows CP866
Windows CP874
Windows CP1250
Windows CP1251
Windows CP1252
Windows CP1256
Windows CP1258
, TCVN5712
并非所有API支持上面列出的编码。比如, PostgreSQL JDBC 驱动就不支持MULE_INTERNAL
和 LATIN10
设置与其它设置表现得相当不同。如果服务器字符集是 SQL_ASCII
, 服务器把字节值 0-127 的数值根据 ASCII 标准解析,而字节值未 128-255 的则当作未解析的字符。 如果设置为 SQL_ASCII
,就不会有编码转换。因此,这个设置基本不是用来声明所使用的编码的, 因为这个声明会忽略编码。在大多数情况下,如果你使用了任何非 ASCII 数据,那么使用 SQL_ASCII
设置都是不明智的,因为 PostgreSQL 会无法帮助你转换或者校验非 ASCII 字符。
21.2.2. 设置字符集initdb 为一个 PostgreSQL 集群定义缺省的字符集,比如:
initdb -E EUC_JP把缺省字符集设置为 EUC_JP
(用于日文的扩展的 Unix 编码)。 如果你喜欢用长选项声明的话,你可以用 --encoding
。 如果没有给出-E
或者--encoding
选项, initdb
将基于制定的区域或者缺省区域试图判断合适的编码。
你可以创建一个有着不同编码的数据库:
createdb -E EUC_KR korean将创建一个使用EUC_KR
字符集的名字叫 korean 的数据库。 另外一种实现方法是使用 SQL 命令:
CREATE DATABASE korean WITH ENCODING 'EUC_KR';数据库的编码是用系统表 pg_database
里的一个 编码字段
代表的。 你可以用psql
命令列出这些编码。
$ psql -l& && && && &List of databases& &Database& & |&&Owner&&|&
&Encoding---------------+---------+--------------- euc_cn& && &&&|
t-ishii | EUC_CN euc_jp& && &&&| t-ishii | EUC_JP euc_kr& && &&&|
t-ishii | EUC_KR euc_tw& && &&&| t-ishii | EUC_TW mule_internal |
t-ishii | MULE_INTERNAL postgres& && &| t-ishii | EUC_JP regression& &
| t-ishii | SQL_ASCII template1& &&&| t-ishii | EUC_JP test& && && & |
t-ishii | EUC_JP utf8& && && & | t-ishii | UTF8(9 rows)
Important:
虽然你可以给一个数据库声明你需要的任何编码,但选择一个与你选择的区域不一致的编码还是不妥的做法。 LC_COLLATE
和 LC_CTYPE
设置暗示一个特定的编码, 与区域相关的操作(比如排序)在不兼容的编码里很有可能产生错误的解析。
因为这些区域设置都是由 initdb
冻结的, 所以在不同的数据库里使用不同的编码更多是理论而不是现实。 这些机制很有可能在将来版本的 PostgreSQL 得到改进。
一个安全使用多种编码的方法是在 initdb
的时候把区域设置为 C
或者 POSIX
,这样旧关闭了任何实际的区域敏感性。
21.2.3. 服务器和客户端之间的自动字符集转换PostgreSQL 支持一些编码在服务器和前端之间的自动编码转换。 转换信息在系统表 pg_conversion
中存储。 你可以使用 SQL 命令 CREATE CONVERSION
创建一个新的转换。 PostgreSQL带着一些预定义的转换。它们在
Table 21-2. 客户/服务器字符集转换
[tr]服务器字符集可用客户端字符集[/tr]
不支持做服务器端编码
, MULE_INTERNAL
, MULE_INTERNAL
, MULE_INTERNAL
, MULE_INTERNAL
不支持做服务器端编码
不支持做服务器端编码
ISO_8859_5
ISO_8859_5
, MULE_INTERNAL
ISO_8859_6
ISO_8859_6
ISO_8859_7
ISO_8859_7
ISO_8859_8
ISO_8859_8
, ISO_8859_5
, MULE_INTERNAL
, MULE_INTERNAL
, MULE_INTERNAL
, MULE_INTERNAL
, MULE_INTERNAL
MULE_INTERNAL
MULE_INTERNAL
, ISO_8859_5
不支持做服务器端编码
任意(不会发生编码转换)
不支持做服务器端编码
所有支持的编码
, ISO_8859_5
, MULE_INTERNAL
, MULE_INTERNAL
, ISO_8859_5
, MULE_INTERNAL
要想打开自动字符集转换功能,你必须告诉 PostgreSQL 你想在客户端使用的字符集(编码)。你可以用好几种方法实现这个目的。
用 psql 里的 /encoding
命令。 /encoding
允许你动态修改客户端编码。 比如,把编码改变为 SJIS
/encoding SJIS
使用 libpq 函数。 /encoding
在做此用途的时候实际上是调用 PQsetClientEncoding()
int PQsetClientEncoding(PGconn *conn
, const char *encoding
);这里 conn
与后端的联接,而 encoding
是你想用的编码。如果编码设置成功它返回 0,否则返回 -1。本次联接的当前编码可以用下面函数显示:
int PQclientEncoding(const PGconn *conn
);请注意它只返回编码 ID,而不是象 EUC_JP
这样的编码符号字串。 要把编码 ID 转换为编码符号,你可以用:
char *pg_encoding_to_char(int encoding_id
使用 SET client_encoding TO
。 可以用 SQL 命令设置客户端编码:
SET CLIENT_ENCODING TO 'value
';你还可以把 SQL 语法里的 SET NAMES
用于这个目的:
SET NAMES 'value
';查询当前客户端编码:
SHOW client_返回缺省编码:
RESET client_
使用 PGCLIENTENCODING
。 如果在客户端的环境里定义了 PGCLIENTENCODING
环境变量, 那么在与服务器进行联接时将自动选择客户端编码。 (这个编码随后可以用上面谈到的任何其它方法覆盖。)
配置变量。 如果在 postgresql.conf
里设置了 client_encoding
变量, 那么在与服务器建立了联接之后,这个客户端编码将自动选定。(这个设置随后可以被上面提到 的其他方法覆盖。)
假如无法进行特定的字符转换 & 比如, 你选的服务器编码是EUC_JP
, 客户端是LATIN1
,那么有些日文字符不能转换成LATIN1
。这时, 不能用LATIN1
字符集表示的字母将被转换成圆括弧包围的十六进制,像,(826C)
如果客户端字符集定义成了 SQL_ASCII
,那么编码转换会被关闭, 不管服务器的字符集是什么都一样。和服务器一样,除非你的工作环境全部是 ASCII 数据, 否则使用 SQL_ASCII
是不明智的。
21.2.4. 进一步阅读下面是学习各种类型的编码系统的好地方。
一整套有关字符集,编码以及代码页的文档。
详细地解释了第3.2节出现的EUC_JP
Unicode 的家目录。
RFC 2044 定义了UTF-8。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:42274次
排名:千里之外
转载:39篇
(1)(1)(3)(2)(3)(5)(7)(1)(3)(10)(1)(3)(4)(1)(1)(1)}

我要回帖

更多关于 php 批量更新数据库 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信