如何处理配置单元中的新行字符?

时间:2018-03-03 04:03:03

标签: hadoop hive teradata

我将表从Teradata导出到Hive .. teradata中的表有一个地址字段,其中包含换行符号(\ n)..最初我将表导出到Teradata挂载文件系统路径然后我正在加载将表放入hive ... teradata表和hive表之间的记录计数不匹配,因为新的行字符在hive中显示。

注意:我不想通过sqoop来处理这个数据我希望在从本地路径加载到hive时处理新行字符。

2 个答案:

答案 0 :(得分:0)

在Hive中加载数据命令只将数据直接复制到hdfs表位置。

Hive分割新行的唯一原因是,如果您只定义了存储为TEXT的表,默认情况下使用新行作为记录分隔符,而不是字段分隔符。

要重新定义表格,您需要类似

的内容
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY  ',' ESCAPED BY 'x' 
LINES TERMINATED BY 'y'

其中,x和y有希望分别在包含新行和记录分隔符的字段周围转义字符

答案 1 :(得分:0)

我通过使用以下选项创建外部表来使其工作:

ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001'
ESCAPED BY '\\' 
STORED AS TEXTFILE;

然后,我为包含数据文件的目录创建了一个分区。 (我的表使用分区) 即

ALTER TABLE STG_HOLD_CR_LINE_FEED ADD PARTITION (part_key='part_week53')  LOCATION '/ifs/test/schema.table/staging/';

注意:请确保在创建数据文件时,将'\'用作转义符。