我正在尝试从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) 还有什么方法可以为字段终止符指定多个字符?
谢谢!
2条答案
按热度按时间fnx2tebb1#
试试下面,
--由\01终止的字段--配置单元删除导入delims--空字符串\n--空非字符串\n
在sqoop中,导入数据查询和配置单元表定义查询。
6jygbczu2#
很可能是您的语法导致了异常。尝试使用:
--用“'”括起来
而不是'。
是的,可以将多个字符设置为字段分隔符进行导入。