如何在sqoop自由形式查询中传递字符串值

mm5n2pyu  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(288)

我需要从几个不同的sql服务器导入数据,这些服务器具有相同的表、表结构甚至主键值。因此,为了唯一地标识从sqlserver(比如“s1”)接收的记录,我希望在配置单元表中有一个额外的列(比如“servername”)。我应该如何在我的sqoop自由形式查询中添加这个。
我只想传递一个硬编码的值和列列表,这样硬编码的列值就应该存储在配置单元中。完成后,我可以根据服务器数据动态更改此值。

sqoop import --connect "connDetails" --username "user"  --password "pass" --query "select col1, col2, col3, 'S1' from table where \$CONDITIONS" --hive-import --hive-overwrite --hive-table stg.T1  --split-by col1 --as-textfile  --target-dir T1  --hive-drop-import-delims

s1是这里的硬编码值。我认为在sql中,当您传递一个硬代码值时,它将作为查询结果返回。有没有什么办法?提前谢谢。

oxiaedzo

oxiaedzo1#

解决方法:实际上它只需要硬编码值的别名。所以执行的sqoop命令是-

sqoop import --connect "connDetails" --username "user"  --password "pass" --query "select col1, col2, col3, 'S1' as serverName from table where \$CONDITIONS" --hive-import --hive-overwrite --hive-table stg.T1  --split-by col1 --as-textfile  --target-dir T1  --hive-drop-import-delims

相关问题