`
bupt04406
  • 浏览: 349568 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

hive转义字符

    博客分类:
  • Hive
 
阅读更多
CREATE TABLE escape (id STRING, name STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '"';

LOAD DATA LOCAL INPATH '/home/tianzhao/book/escape.txt'
OVERWRITE INTO TABLE escape;

escape.txt的内容是:
Joe"2\"3333
Hank"2\"3333

表没有转义,那么两个“都会当作字段分隔符,查询结果是:
select * from escape;
Joe 2\
Hank 2\


ALTER TABLE escape SET SERDEPROPERTIES ('escape.delim' = '\\'); 给表加上了转义字符\,\后面的字符会被转义,直接跳过,如果是分隔符不会被当作分隔符。查询结果是:
select * from escape;
Joe 2"3333
Hank 2"3333




CREATE TABLE escape2 (id STRING, name STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '"';

LOAD DATA LOCAL INPATH '/home/tianzhao/book/escape2.txt'
OVERWRITE INTO TABLE escape2;

escape2.txt 的内容是:
Joe"2"3333"44
Hank"2"3333"44
实际数据比表的字段要多。

select * from escape2;
Joe 2
Hank 2


ALTER TABLE escape2 SET SERDEPROPERTIES ('serialization.last.column.takes.rest' = 'true');
serialization.last.column.takes.rest 的意思是最后一个字段的内容是否包含那些多余的数据:
select * from escape2;
Joe 2"3333"44
Hank 2"3333"44

hive只支持单字节的分隔符,LazyStruct、LazySimpleSerDe里面可以看到hive如何序列化、反序列化的过程。

ALTER TABLE ctas_null_format1 SET SERDEPROPERTIES ('serialization.null.format'='\\N');
分享到:
评论
1 楼 clarkyzl 2012-11-16  
照哥,这是个坑啊。
前面解析可以用多字节,后面能不能用多字节完全看serde,默认serde不能。

相关推荐

    SQL语法关于&、双引号、和单引号的解释

    实际插入时,因为小王通常是从表单中获取的变量,不过因为变量不能直接写入字符串,必须通过连接符&和字符串连接在一起,所以要写成如下形式:myusername=Request.Form("username") strSql="Insert Into users...

    hive3.1.0-antrl3.5.2-Hivegrammar源码.zip

    使用antlr需要我们提前定义好识别字符流的词法规则和用于解释Token流的语法分析规则。然后,antlr会根据我们提供的语法文件自动生成相应的词法/语法分析器。hive借助Antlr定义SQL的词法规则和语法规则,完成SQL词法...

    PostgreSQL ERROR: invalid escape string 解决办法

    这个错误通常出现在执行SQL查询时,尤其是在涉及转义字符的场景下。本文档将从问题描述、环境设定、错误分析、解决方法以及错误原因等多个维度详细解释这一问题,并提供相应的解决办法。 首先,从问题的环境设定...

    sqoop常用命令参数-中文1

    - `--input-escaped-by`:处理输入数据中的转义字符。 - `--input-fields-terminated-by`:输入字段之间的分隔符。 - `--input-lines-terminated-by`:输入行之间的分隔符。 - `--input-optionally-enclosed-by`...

    替换php字符串中的单引号为双引号的方法

    2. `preg_replace` 函数的使用应该保证正则表达式准确,防止出现转义错误或者错误的字符匹配。 3. 理解原始字符串中的数据格式,避免在替换过程中破坏原有数据的结构。 4. 在替换操作后,检查并验证替换结果是否符合...

    sqoop学习文档(2){Sqoop import、Sqoop export}.docx

    在双引号内的 SQL 查询中,确保 `$CONDITIONS` 前有转义字符以避免 shell 解析。此外,可以使用 `--where` 来控制要导入的行,其中 `$CONDITIONS` 是 Sqoop 自动插入的条件,以确保正确分发数据到映射器。 3. **...

    Spark-shell批量命令执行脚本的方法

    EOF`来创建一个“here document”,这使得我们可以将多行命令放入脚本中,而无需担心引号和转义字符的问题。在脚本执行时,这部分内容会被当作标准输入传递给`spark-shell`进程。 值得注意的是,脚本中的Spark SQL...

Global site tag (gtag.js) - Google Analytics