oracle 迁移华为云pg 使用的迁移账户为root,则表的owner为 root ,需对表进行owner处理(本章 解决方案内是单双引号均需要改成英文字符)
检查表的所属owner和所属schema
select from pg_tables where tablename=’表名称’
确认表的所属schema是否正确,配置迁移时所配置的schema名称
如果schema确认一定没问题,也可执行
select from pg_tables where schemaname=’迁移目标schema’
修改表的所属owner :alter table 表名 owner to 用户;
sql拼接查询所有的表
select ‘ALTER TABLE ‘ || tablename || ‘ OWNER TO ncc_2105_dianz;’ from pg_tables where schemaname=’ncc_2105_dianz’;
由于迁移的表数据量过大,导致无法筛选所有的表,一般工具无法导出所有的表,故使用pgsql工具进行查询结果文件导出,方法如下
1、通过psql进行表导出
psql工具下载安装
http://nccloud.yytimes.com/q_215.html
2、执行数据导出
psql “host=数据库IP port=5432 user=root password=root密码 dbname=目标数据库名称” -c “select ‘ALTER TABLE ‘ || tablename || ‘ OWNER TO 目标owner名称;’ from pg_tables where schemaname=’表所属schema’;” > /data/sql.sql
3、将导出的sql进行执行,一般工具执行大批量sql会出现卡死问题等故需要使用pgsql登录
由于root的search_path属性,导致无法直接执行,故需要先登录数据修改search_path,退出后search_path会失效
登录数据库
psql “host=数据库IP port=5432 user=root password=root密码 dbname=目标数据库”
查询search_path
show search_path;
修改search_path
set search_path = “$user”,public,目标schema;
执行之前导出的文件
\i /data/sql.sql
退出登录
\q
没有找到相关结果
0 个回复