Sqoop 从 mysql 导入空值不会替换 Null

Sqoop import null values from mysql doesn't replace Null

在 mysql 中有一个 table,其中一些列具有空值。我想 sqoop 将 table 导入配置单元。当我执行 sqoop 导入时,我在 mysql table.

中的列中获取所有空值

我正在做以下事情

sqoop import --connect jdbc:xxxxxx --username xxxx --password xxxx \
--query "select * from  hive_db.xxxx where $CONDITIONS" --null-string '' \
--null-non-string '' -m 1 --hive-import --hive-database hivedatabase \
--hive-table table --as-parquetfile --create-hive-table --target-dir /user/hive/warehouse/hivedatabase.db/table

但我仍然将配置单元列作为 Null intsead of empty

为什么会这样?我怎样才能得到想要的结果。

当您将数据导入为文本文件以指定空值时使用它。

解决方法是更改​​查询中的空值。根据您的数据库引擎,它可能是这样的(sql 服务器语法)

--查询"select isnull(columnA,''), isnull(columnB,''), etc from yourTable where $conditions"

sqoop import --connect jdbc:xxxxxx --username xxxx --password xxxx \
--query "select * from  hive_db.xxxx where $CONDITIONS" --null-string " " \
--null-non-string " " -m 1 --hive-import --hive-database hivedatabase \
--hive-table table --as-parquetfile --create-hive-table --target-dir /user/hive/warehouse/hivedatabase.db/table