使用 R 错误从 BigQuery 读取数据时出现语法错误:在第 1 行第 10 列遇到“FROM”“FROM”。期待:<EOF>

Posted

技术标签:

【中文标题】使用 R 错误从 BigQuery 读取数据时出现语法错误:在第 1 行第 10 列遇到“FROM”“FROM”。期待:<EOF>【英文标题】:Syntactical error when reading data from BigQuery using R Error: Encountered " "FROM" "FROM "" at line 1, column 10. Was expecting: <EOF> 【发布时间】:2020-11-26 08:48:34 【问题描述】:

我已经检查了答案,但是没有特别适用于“FROM”“FROM”的答案。我正在尝试使用 RStudio 从 BigQuery 中提取数据,该 RStudio 通过 Google Compute Engine 在虚拟机上运行,​​包 readr和bigrquery都安装好了,并且session已经通过认证了,代码如下

project <- "testconnectrtobigquery"
sql <- "SELECT * FROM 'testconnectrtobigquery.TestDataSetRtoBQ.TestTable' LIMIT 5"
query_exec(sql, project = project)

这是错误

> source('~/.active-rstudio-document')
Error: Encountered " "FROM" "FROM "" at line 1, column 10.
Was expecting:
<EOF> 
 [invalidQuery] 

请有人解释一下如何解决这个问题?

【问题讨论】:

你需要在表名周围加上那些单勾吗? ' 【参考方案1】:

通常,运行 SQL 的关系数据库使用单引号表示文字、字符串值,而不是表和列名等标识符。具体来说,根据 Google BigQuery 文档,GBQ 遵循两种约定来转义特殊字符、空格和关键字:

对于Standard SQL,带引号的标识符必须用反引号括起来。 对于Legacy SQL,名称应括在方括号中。

因此,请考虑根据您的 SQL 模式将单引号替换为反引号或括号:

-- BigQuery Legacy SQL
SELECT * FROM `testconnectrtobigquery.TestDataSetRtoBQ.TestTable` LIMIT 5

-- BigQuery Standard SQL
SELECT * FROM [testconnectrtobigquery.TestDataSetRtoBQ.TestTable] LIMIT 5

但是,您没有任何特殊字符或空格,因此不需要转义。

SELECT * FROM testconnectrtobigquery.TestDataSetRtoBQ.TestTable LIMIT 5

【讨论】:

以上是关于使用 R 错误从 BigQuery 读取数据时出现语法错误:在第 1 行第 10 列遇到“FROM”“FROM”。期待:<EOF>的主要内容,如果未能解决你的问题,请参考以下文章

从 Cloud Storage Json 加载数据时出现 BigQuery 错误

在 R 中使用 foreach 循环读取 MATLAB .mat 文件时出现问题

写入 BigQuery 时出现 MojoExecutionException

使用 Hibernate 将 Java 应用程序从 DB2 迁移到 BigQuery 时出现错误“找到:int64,预期:整数”

从 Cloud Storage 导入 BigQuery 时出现后端错误

从 BigQuery 中的 .avro 文件创建表时出现“resourcesExceeded”错误