Postgresql数据的导入和导出,以及copy命令介绍\x0d\x0a\x0d\x0a如何导出PostgreSQL数据库中的数据:\x0d\x0apg_dump -U postgres -f dump.sql mydatabase\x0d\x0a具体某个表\x0d\x0apg_dump -U postgres -t mytable -f dump.sql mydatabase\x0d\x0a\x0d\x0a导入数据时首先创建数据库再用psql导入:\x0d\x0acreatedb newdatabase\x0d\x0apsql -d newdatabase -U postgres -f dump.sql\x0d\x0a\x0d\x0a把数据按照自己所想的方式导出,强大的copy命令:\x0d\x0aecho "copy students to? stdout DELIMITER '|'"|psql school|head\x0d\x0a(students为表名,school为库名,各个字段以|分隔)\x0d\x0aecho 'copy (select * from students order by age limit 10) to stdout;' | psql school
成都创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、成都做网站、中阳网络推广、小程序开发、中阳网络营销、中阳企业策划、中阳品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联公司为所有大学生创业者提供中阳建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
1、首先可以通过重定向的方法将执行结果放到txt文件中,看看是否还有列名。
2、其次检查一下网络运行是否通畅,可以断开网络重新连接一下,重新连接后,看postgresqlsql是否含有列名即可。
通过命令pg_dump可以导出数据库的数据,用copy命令可以将一张表的数据导出为csv格式数据,
导出整个数据库 pg_dump -h localhost -U postgres(用户名) 数据库名(缺省时同用户名) /data/dum.sql 导出某个表 pg_dump -h localhost -U postgres(用户名) 数据库名(缺省时同用户名) -t table(表名) /data/dum.sql
迁移PostgreSQL到Oracle涉及到两方面工作:表结构的迁移和表数据的迁移。
表结构的迁移
表结构的迁移相对简单可以借助ESF DatabaseMigration Toolkit进行.。ESF Database MigrationTookit工具是试用版,所以不能通过其迁移数据(它会将所有varchar字段的开头替换为T)。通过ESF DatabaseMigration Toolkit迁移完成后,通过PL/SQL developer的export userobjects得到创建表结构的语句。
表数据的迁移
数据迁移有2种方式:postgreSQL导出insert语句然后执行语句导入或者postgreSQL导出文件然后用oracle的sqlldr方式导入。前者存在clob难以插入以及sql长度限制等问题,推荐后者方式进行数据迁移。
1.Copy命令导出数据文件
copy table1 to'd:/table1.data' delimiter as '|' nullas '';
注意:postgreSQL存在boolean类型导出为t或者f(oracle用int类型1或者2来代替),使用cast函数
Copy (select cast(column asint) from table1 )to 'd:/table1.data' delimiter as '|' null as '';
批量执行使用sql函数进行
create functionexportLiferay(path text) returns void
as
$$
begin
execute 'copy table1 to ''' || path || 'table1_.data''delimiter as ''|'' null as '''' ';
return;
end;
$$
languageplpgsql;
2. 制作sqlldr控制文件
注意:字符集、clob以及时间,日期类型
load data
CHARACTERSET UTF8
into table table1
fields terminated by "|"
optionally enclosed by '"'
trailing nullcols
(
folderid,
groupid,
companyid,
userid,
createdatetimestamp"yyyy-mm-dd hh24:mi:ss.ff",
modifieddatetimestamp"yyyy-mm-dd hh24:mi:ss.ff",
parentfolderid,
name,
descriptionchar(10000)
)
3.执行导入
sqlldr import/import data=table1.data control=table1.ctllog=table1.log readsize=100000000