sqoop的jar包连接Postgre库的参数注意事项
参数:schema的使用
java在调用sqoop时候,一些通用参数在此就不介绍了,很多地方都有详细介绍,本文只介绍一些我个人在使用sqoop工具包遇到的问题:访问Postgre库时候怎么加上schema参数
- 1 加上schema参数时候,要在–schema之前再加一个"–"
- 2 schema参数要加在所有参数的最后
连接Postgre库的代码示例
// 将HDFS文件导入到Postgre库
/**
*@param conf 连接Hadoop的conf
*@param pg_tablename pg库的表名
*@param table_columns 表的列名
*@param schema_name schema名字
*@param hdfsDir HDFS的文件目录
*@param pg_con_info_map pg库的连接信息
*/
public static void ExportCmd(Configration conf,
String pg_tablename,String schema_name,List<String> table_columns,
String hdfsDir,Map<String,String> pg_con_info_map){
list<String> list = new ArryList<>();
//pg库的连接名
list.add("--connect");
list.add(pg_con_info_map.get("DRIVERURL"));
list.add("--username");
list.add(pg_con_info_map.get("USER"));
list.add("--password");
list.add(pg_con_info_map.get("PASSWORD"));
list.add("--table");
list.add(pg_tablename);
list.add("--colnumns");
list.add(StringUtils.join(table_columns));
list.add("--fields-terminated-by");
list.add("\t");
list.add("--export-dir");
list.add(hdfsDir);
list.add("-m");
list.add("1");
//设置表的schema
//放在所有参数的最后
list.add("--");
list.add("--schema");
list.add(schema_name);
Exporter exporter = new Exporter();
....
}
另外我自己修改了sqoop-1.4.5的jar包源码
修改了jar包的源码,目前支持scheme.tableName的表名格式,例如表名为:hero.zero_test_pg,会自动处理,在Postgre库中找"hero".zero_test_pg的表名,
原来schema参数依然可以使用,jar包后续会上传