从双引号括起来的 csv 文件格式加载配置单元数据
hive data load from double quote enclosed csv file format
我的查询不符合这个 post similar post
在 sql 中使用了以下命令。但我不是从 shell 执行的。 sql 在 python 中创建为字符串,并使用 paramiko 传递给配置单元。在 shell 它工作正常。但是当作为字符串从 python 传递时,我得到一个 bash 错误。看起来像是一些字符转义问题。
我正在尝试加载每个列值都用双引号引起来的 csv 文件。
strsql='''create table temp(col1 INT,col2 string) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES ("quoteChar" = "\"") tblproperties ('skip.header.line.count'='1'); '''
错误
["bash: -c: line 4: unexpected EOF while looking for matching `''\n", 'bash: -c: line 5: syntax error: unexpe cted end of file\n']
i 更改为 ("quoteChar" = "\"")
以添加额外的斜杠。然后我得到一个 sql 错误
:FAILED: ParseException line 4:38 cannot recognize input near 'quoteChar' '=' ')' i n table properties list
在进一步检查中,hive 命令被调用时带有一些提取属性,如下所示。这会是个问题吗?
hive -e set hive.cli.print.header=true;hive.support.quoted.identifiers=column;hvesql;
理想情况下 sql 应该包含双引号。如下。因此,正如 Ronak 在评论中提到的那样,双引号应该被转义。
ROW FORMAT SERDE "org.apache.hadoop.hive.serde2.OpenCSVSerde"
WITH SERDEPROPERTIES ("quoteChar" = '"') tblproperties ("skip.header.line.count"="1")
所以当作为字符串变量从外部发送时 shell 它应该像下面这样转义。需要使用双斜杠
ROW FORMAT SERDE \"org.apache.hadoop.hive.serde2.OpenCSVSerde\"
WITH SERDEPROPERTIES (\"quoteChar\" = '\"') tblproperties (\"skip.header.line.count\"=\"1\")
有点简单。但花了很多时间才弄清楚:)
我的查询不符合这个 post similar post
在 sql 中使用了以下命令。但我不是从 shell 执行的。 sql 在 python 中创建为字符串,并使用 paramiko 传递给配置单元。在 shell 它工作正常。但是当作为字符串从 python 传递时,我得到一个 bash 错误。看起来像是一些字符转义问题。
我正在尝试加载每个列值都用双引号引起来的 csv 文件。
strsql='''create table temp(col1 INT,col2 string) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES ("quoteChar" = "\"") tblproperties ('skip.header.line.count'='1'); '''
错误
["bash: -c: line 4: unexpected EOF while looking for matching `''\n", 'bash: -c: line 5: syntax error: unexpe cted end of file\n']
i 更改为 ("quoteChar" = "\"")
以添加额外的斜杠。然后我得到一个 sql 错误
:FAILED: ParseException line 4:38 cannot recognize input near 'quoteChar' '=' ')' i n table properties list
在进一步检查中,hive 命令被调用时带有一些提取属性,如下所示。这会是个问题吗?
hive -e set hive.cli.print.header=true;hive.support.quoted.identifiers=column;hvesql;
理想情况下 sql 应该包含双引号。如下。因此,正如 Ronak 在评论中提到的那样,双引号应该被转义。
ROW FORMAT SERDE "org.apache.hadoop.hive.serde2.OpenCSVSerde"
WITH SERDEPROPERTIES ("quoteChar" = '"') tblproperties ("skip.header.line.count"="1")
所以当作为字符串变量从外部发送时 shell 它应该像下面这样转义。需要使用双斜杠
ROW FORMAT SERDE \"org.apache.hadoop.hive.serde2.OpenCSVSerde\"
WITH SERDEPROPERTIES (\"quoteChar\" = '\"') tblproperties (\"skip.header.line.count\"=\"1\")
有点简单。但花了很多时间才弄清楚:)