1、概述
大家好,我是欧阳方超。
最近有个操作是把数据从hive导到postgresql,使用的工具是sqoop,在实现将数据导到postgresql数据库指定模式下的表时,着实折腾了一番。
2、如何指定模式
在将数据从hive导出到postgresql时,如果不指定schema,默认是导出到public模式下,那么在将数据导入到postgresql时应该怎么指定模式名呢,在sqoop官网可以看到下面的细节,
If you need to work with tables that are located in non-default schemas, you can specify schema names via the --schema argument. Custom schemas are supported for both import and export jobs. For example:
sqoop import ... --table custom_table -- --schema custom_schema
意思是可以使用-- --schema 模式名的方式来指定模式名,需要注意的是,该参数需要放在导入或导出命令的最后,放在中间或其他位置是无效的。
3、延伸
上面是在命令行执行sqoop命令时加模式名的方法,如果是调用Sqoop.runSqoop(sqoop, data)方法,其中第二个参数是字符串数组,该数组中的元素由sqoop的相关参数及相应的值组成,其中在拼接模式名时也应该放在最后,而且还要注意需要保证--
、--schema
分别作为字符串数组的两个元素,而不是他们俩写在一起作为一个元素,否则sqoop依然识别不了schema。
4、总结
本文记录了在命令行及其Java程序中如何将数据导到postgresql的指定模式中,有这类需求的可以参考一二。
我是欧阳方超,把事情做好了自然就有兴趣了,如果你喜欢我的文章,欢迎点赞、转发、评论加关注。