使用HQL导入外部文件到表时遇ParseException错误求助
解决Hive建表错误及数据导入问题
错误原因
你遇到的ParseException是因为date和time是Hive的保留关键字,不能直接作为列名使用,Hive解析器会将它们识别为语法关键字而非列名,从而抛出错误。
修正建表语句
提供两种可行的修正方案:
方案1:用反引号转义关键字
使用反引号`将关键字列名包裹,告诉Hive将其视为普通列名:
CREATE TABLE achat (`date` STRING, `time` STRING, city STRING, item STRING, price FLOAT, mode STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE;
方案2:修改列名避开关键字
直接将关键字列名替换为非关键字名称,避免后续操作的转义麻烦:
CREATE TABLE achat (dt STRING, tm STRING, city STRING, item STRING, price FLOAT, mode STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE;
导入文本文件到表中
根据文件存储位置选择对应导入方式:
从本地文件系统导入
如果文件在你的本地机器上,执行以下HQL:
-- 覆盖表中已有数据 LOAD DATA LOCAL INPATH '/本地文件路径/data.txt' OVERWRITE INTO TABLE achat; -- 追加数据到表中(不覆盖) LOAD DATA LOCAL INPATH '/本地文件路径/data.txt' INTO TABLE achat;
从HDFS文件系统导入
- 先将本地文件上传到HDFS(若未上传):
hdfs dfs -put /本地文件路径/data.txt /hdfs存储路径/
- 执行Hive导入语句:
-- 覆盖表中已有数据 LOAD DATA INPATH '/hdfs存储路径/data.txt' OVERWRITE INTO TABLE achat; -- 追加数据到表中(不覆盖) LOAD DATA INPATH '/hdfs存储路径/data.txt' INTO TABLE achat;
内容的提问来源于stack exchange,提问作者sarah Chettouh
相关产品推荐
相关产品推荐

