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
在 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