sqoop从oracle抽取数据到hive时候分隔符有关问题

sqoop从oracle抽取数据到hive时候分隔符问题

 

 

oracle表字段默认使用,间隔,因此导出的时候,sqoop写法如下 注意分隔符为,:

 

sqoop import \
--connect $ORCL_CONNECTOR \
--username $ORCL_USERNAME \
--password $ORCL_PASSWORD \
--table $TABLENAME \
--target-dir $HDFSPATH \
--m $MAP \
--columns $COLUMNS \
--fields-terminated-by ',' \   
--jar-file ../../lib/sqoop-import.jar \
--class-name com.chinadaas.gsinfo.sqoop.oracle.$TABLENAME

 

导出到hdfs后,通过hive创建外表关联hdfs的写法如下:

 

drop table if exists F_LIUCHENG_TMP_HDFS_EXT_20150717;
create external table F_LIUCHENG_TMP_HDFS_EXT_20150717 (
MARKCODE string, MARKCODE_KEY string, UNIONTYPECODE string, XIANGMU string, LIUCHENGDATE string, CREATEDATE string, ISDELITEM string, REMARK string, HASDOWN string, FLIUC_IDT string, FLIUC_UDT string, FLIUC_STATUS string, FLIUC_ID string, FLIUC_SID string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 
LOCATION '/tmp/oracle_20150717/F_LIUCHENG_TMP';

 

 

这样,sqoop导出的字段就和hive的字段关联起来,数值也会一一对应,否则,对应的数据会都放在hive的第一个字段里并且以,间隔,hive的其余字段都为Null。

 

这是工作总遇到的问题的总结。