首页 > 解决方案 > Sqoop Eval 运行多个查询?

问题描述

我们可以使用 Sqoop eval 函数运行多个 sql 查询吗?

例如:
sqoop eval -D mapreduce.job.queuename=NONP.XXXX --connect "jdbc:sqlserver://ee-dev/cloud.net:1433;database=sqlserver1" --username XXXX --password ABC -- query 'drop table if exists table1;'select townid,stateid,countryid from town;'

有人可以建议在一个 sqoop EVAL 中运行多个查询的解决方案吗?
如果在一个 Sqoop EVAL 中无法进行多个查询,那么我必须编写多个 Sqoop Eval 作业。

标签: sql-serversqoopsqoop2

解决方案


SQL Server 客户端通常可以发送一批多条语句而不是单个查询。您需要将语句连接在一个字符串中,并用空格分隔它们。在多语句批处理中抑制 ROWCOUNT 消息也是一个好习惯。所以像:

--query 'set nocount on; drop table if exists table1; select townid,stateid,countryid from town;'

可以在单个批次中出现的语句有一些限制。某些 DDL 语句必须是批处理中的第一个或唯一一个语句,并且解析批处理所需的所有对象都必须存在于批处理的开头。如有必要,您可以通过在批处理中使用动态 SQL 来解决这两个问题。


推荐阅读