Apache Drill查询CSV文件时,列名Last(SQL关键字)引发报错求助
解决Apache Drill查询CSV时关键字列名的报错问题
你猜的完全正确!Last属于SQL的保留关键字,Apache Drill解析查询语句时会把它当成SQL语法的一部分,而不是CSV里的列名,这就是单独查询这个列会报错的原因。
解决这个问题很简单,只需要把作为列名的关键字用**反引号(`)**包裹起来(这是最通用的SQL转义方式),或者用双引号也行。修改后的查询语句如下:
SELECT Bid, `Last` FROM table(dfs.`/data/bb_20020201.csv` (type => 'text', fieldDelimiter => ',', extractHeader => true));
或者用双引号的版本:
SELECT Bid, "Last" FROM table(dfs.`/data/bb_20020201.csv` (type => 'text', fieldDelimiter => ',', extractHeader => true));
这样Drill就能正确识别Last是你的CSV列名,而不是SQL关键字了。以后遇到类似的保留关键字(比如Order、Group、Select等)作为列名的情况,都可以用这个方法解决。
内容的提问来源于stack exchange,提问作者dds ss
相关产品推荐
相关产品推荐

