【问题标题】:Unrecognised name error in bq command linebq 命令行中出现无法识别的名称错误
【发布时间】:2021-12-31 23:02:01
【问题描述】:

我想获取表的记录数。我已经写了以下程序。

Create or replace procedure 
procedurename(In tablename string)
Begin
Declare sql1 string
Set sql1= 'select count(*) from ' ||tablename;
Execute immediate sql1;
End;

问题:

  1. 当我在 bq 控制台中使用调用 sp 执行它时,它给了我计数。 但是当我在 bq 命令行中使用 bq query --use_legacy_sql=false '调用过程名(表名)' 它给我的错误是“无法识别的名称:表名”。为什么会这样?

谢谢。

【问题讨论】:

  • 嗨@Kavya14,如果您觉得我的回答有帮助,请考虑按照 Stack Overflow guidelines 接受并投票,帮助更多 Stack 贡献者进行研究。 :)
  • @SakshiGatyan 当然。完成:)

标签: sql stored-procedures command-line google-bigquery parameter-passing


【解决方案1】:

回答您的问题:

  1. 您收到 Unrecognized name:'tablename' 错误,因为在您的查询中 tablename 未定义。

尝试使用下面的命令来执行你的存储过程

bq query \
--use_legacy_sql=false \
‘DECLARE tablename STRING DEFAULT NULL;
set tablename="your-table-name";
CALL `projectid.datasetid.procedurename`(tablename);’
    
  1. 要将表名作为参数传递,您可以尝试使用 documentation 中提到的 bq 命令行或客户端库。

例如在 bq 命令行中:

    bq query \
    --use_legacy_sql=false \
    --parameter=tablename:string:your-table-name \
    'DECLARE tablename STRING ;
    CALL `projectid.datasetid.procedurename`(@tablename);'

评论#1的答案:

  • 使用 bq 命令行无法在运行时传递用户输入,但您可以使用客户端库在运行时传递表名。

例如参考这个python脚本:

from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client(project="project_id")

mytable1=raw_input("Enter your table: ")

query = """
   DECLARE tablename STRING ;
   CALL `project_id.dataset.procFedurename`(@tablename);

"""
job_config = bigquery.QueryJobConfig(
   query_parameters=[
       bigquery.ScalarQueryParameter("tablename", "STRING", mytable1),
      
   ]
)

job = client.query(query, job_config=job_config)  # Make an API request.

for row in job.result():
   print("No of records:{}".format(row[0]))

【讨论】:

  • 谢谢。你能告诉我是否有办法使用这个 SP 打印一个语句,它会在运行时要求我输入表的名称,并在给出名称后给我结果?
  • 您好,我在 bq 命令行中尝试了上述命令,但仍然收到“无法识别的名称”错误。
  • 嗨@Kavya14,我已经编辑了评论#1的答案。
  • 我能够使用上面的命令成功得到结果。 output。请检查您是否正确使用了该命令。如果问题仍然存在,请与命令一起分享您的完整错误。
猜你喜欢
  • 2014-09-23
  • 1970-01-01
  • 2021-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多