sqoop导入数据到hive
sqoop to import data to hive
我正在尝试使用 sqoop2 将数据导入配置单元 table。我正在使用 --hive-import
但它不起作用
代码:
sqoop import --connect jdbc:sqlserver://192.168.x.xxx:11xx --username user --password user --table xxxx.NOTIFICATION --hive-import
错误:
ERROR manager.SqlManager: Error executing statement: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'XXXX.NOTIFICATION'.
我做错了什么?
我假设 table 名称是 NOTIFICATION 并且您在编写时试图提及数据库名称 xxxx --table xxxx.NOTIFICATION
如果是这种情况,你能试试下面提到的语法吗?
sqoop import --connect jdbc:sqlserver://192.168.x.xxx:11xx;databaseName=xxxx --username user --password user --table NOTIFICATION --hive-import
以下观察基于 Sqoop 1.4.6
您在 table 名称中使用了 .(点)。
在内部,Sqoop 将触发命令
SELECT t.* FROM xxxx.NOTIFICATION AS t WHERE 1=0
获取您的 SQL 服务器 table 的元数据。
此命令被解释为
- xxxx - 计划名称
- 通知 - Table 姓名
为避免这种情况,您可以使用转义字符([ ] 在 SQL Server 的情况下):
sqoop import --connect jdbc:sqlserver://192.168.x.xxx:11xx --username user --password user --table [xxxx.NOTIFICATION] --hive-import
这将生成
SELECT t.* FROM [xxxx.NOTIFICATION] AS t WHERE 1=0
现在 xxxx.NOTIFICATION
将被视为 table 名称。
嗨,在做了一些研究并与@dev 讨论这个问题后,我找到了解决方案。
我正在使用 sqoop2,所以我更改了我的命令并使用了下面的命令,它对我有用。
$ sqoop import --connect "jdbc:sqlserver://192.168.x.xxx:11xx;database=SSSS;username=user;password=user" --query "SELECT * FROM xxxx.NOTIFICATION where $CONDITIONS" --split-by xxxx.NOTIFICATION.ID --hive-import --hive-table NOTIFICATION --target-dir NOTIFICATION
在执行此命令之前,我们应该使用 create
命令在配置单元中创建 table。我在这里创建了名为 NOTIFICATION
.
的配置单元 table
我正在尝试使用 sqoop2 将数据导入配置单元 table。我正在使用 --hive-import
但它不起作用
代码:
sqoop import --connect jdbc:sqlserver://192.168.x.xxx:11xx --username user --password user --table xxxx.NOTIFICATION --hive-import
错误:
ERROR manager.SqlManager: Error executing statement: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'XXXX.NOTIFICATION'.
我做错了什么?
我假设 table 名称是 NOTIFICATION 并且您在编写时试图提及数据库名称 xxxx --table xxxx.NOTIFICATION
如果是这种情况,你能试试下面提到的语法吗?
sqoop import --connect jdbc:sqlserver://192.168.x.xxx:11xx;databaseName=xxxx --username user --password user --table NOTIFICATION --hive-import
以下观察基于 Sqoop 1.4.6
您在 table 名称中使用了 .(点)。
在内部,Sqoop 将触发命令
SELECT t.* FROM xxxx.NOTIFICATION AS t WHERE 1=0
获取您的 SQL 服务器 table 的元数据。
此命令被解释为
- xxxx - 计划名称
- 通知 - Table 姓名
为避免这种情况,您可以使用转义字符([ ] 在 SQL Server 的情况下):
sqoop import --connect jdbc:sqlserver://192.168.x.xxx:11xx --username user --password user --table [xxxx.NOTIFICATION] --hive-import
这将生成
SELECT t.* FROM [xxxx.NOTIFICATION] AS t WHERE 1=0
现在 xxxx.NOTIFICATION
将被视为 table 名称。
嗨,在做了一些研究并与@dev 讨论这个问题后,我找到了解决方案。
我正在使用 sqoop2,所以我更改了我的命令并使用了下面的命令,它对我有用。
$ sqoop import --connect "jdbc:sqlserver://192.168.x.xxx:11xx;database=SSSS;username=user;password=user" --query "SELECT * FROM xxxx.NOTIFICATION where $CONDITIONS" --split-by xxxx.NOTIFICATION.ID --hive-import --hive-table NOTIFICATION --target-dir NOTIFICATION
在执行此命令之前,我们应该使用 create
命令在配置单元中创建 table。我在这里创建了名为 NOTIFICATION
.