时间:2021-07-01 10:21:17 帮助过:2人阅读
没用过,表示给每个列的数据都加上“”,在PostgreSql中,获取表的所有列名的数组形式的语句如下:
1 SELECT array_to_string(array( 2 select attname from pg_attribute where attrelid = ‘表名称‘ ::regclass and attnum > 0 3 and attisdropped = ‘f‘ 4 ), ‘,‘) as name
有兴趣可以试试。
3.下载csv文件
4.编辑*.ctl控制文件
1 load data 2 CHARACTERSET UTF8 3 infile "/home/oracle/hthhf.csv" 4 truncate 5 into table t_yw_hthhf_old 6 fields terminated by "," 7 OPTIONALLY ENCLOSED BY ‘"‘ 8 trailing nullcols 9 ( 10 列名1 integer external , 11 列名2 timestamp "YYYY-MM-DD hh24:mi:ss" , 12 列名3,13 列名4 float external 14 )
表示将/home/oracle/hthhf.csv的数据传入表t_yw_hthhf_old中,用逗号分割。需要注意的是下面括号中的部分,字符串型不加修饰,整型和浮点型分别加integer/float external,日期加timestamp "YYYY-MM-DD hh24:mi:ss"。
5.上传csv和ctl文件至目标服务器(略);
6.在目标服务器切换成oracle用户,并执行一下命令:
sqlldr userid=用户名/密码 control=ctl文件的全路径;
比如我上传到/home/oracle下了,则control=/home/oracle/hthhf.ctl
7.其他问题
导入后需要查看目标数据库,检查是否全部导入,如果数据不全,或在执行命令时异常,需要查看与ctl文件同目录下的log,与ctl同名,里面会记录错误原因。目前见过的错误有:字段中的内容含有换行或字段长度不够等等,依次解决即可。
sqlldr导入数据(以PostgreSql>>>Oracle为例)
标签: