如何在使用create hive table在配置单元中创建表时使用自定义分隔符

rqmkfv5c  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(344)

我正在尝试从rdbms表导入数据到hdfs。然后我使用createhive表将架构复制到配置单元,然后将数据加载到该配置单元表。
用于导入到hdfs的命令

sqoop import --connect jdbc:mysql://localhost/sqoop --username sqoop --password sqoop --table customers --warehouse-dir testingsqoop -m 1 --fields-terminated-by ',' --enclosed-by "\'" --lines-terminated-by "\n"

用于创建配置单元表的命令:

sqoop create-hive-table --connect jdbc:mysql://localhost/sqoop --username sqoop --password sqoop --table customers --hive-table customers --fields-terminated-by "," --enclosed-by "\'" --lines-terminated-by "\n"

最后是用于将数据加载到配置单元的查询

load data inpath '/user/cloudera/testingsqoop/customers/*' into table customers;

因为我用一个引号将字段括起来 ' ,配置单元在创建表时不考虑 --enclosed-by 标志,因此配置单元表中的列仍有引号 ' .

NULL  'Richard'  'Hernandez'  'XXXXXXXXX'  'XXXXXXXXX'  '6303 Heather Plaza'  'Brownsville'  'TX'  '78521'

但是如果我不使用 --enclosed-by 它很好用,但我想要它。
1) 你能帮个忙吗?
2) 还有什么方法可以为字段终止符指定多个字符?
谢谢!

fnx2tebb

fnx2tebb1#

试试下面,
--由\01终止的字段--配置单元删除导入delims--空字符串\n--空非字符串\n
在sqoop中,导入数据查询和配置单元表定义查询。

6jygbczu

6jygbczu2#

很可能是您的语法导致了异常。尝试使用:
--用“'”括起来
而不是'。
是的,可以将多个字符设置为字段分隔符进行导入。

相关问题