从Bigquery选择创建表

3

您好,我可以使用MSSQL或Oracle中的SQL语句从旧表格创建新表格,方法如下:

Select * into new_table  from  old_table;

在BigQuery中是否可以做到这一点?当我在控制台键入以下内容时,出现错误:“Error: Encountered " "INTO" "INTO "" at line 2, column 1. Was expecting: "。

我有一个包含内联用户定义函数的Select语句。我希望将此Select语句的输出保存在单独的表格中。


如果你觉得自己有一个好问题(就像在这种情况下一样),回答自己的问题是一个好习惯(而且你绝对可以做到)。总的来说,常识规则是将答案与问题分开。 - Mikhail Berlyant
是的,你说得对 :)。 - Benjamin Martin
2个回答

4

您无法使用into,但可以单击“显示选项”并在其中选择一个表。


谢谢,伙计。有没有通过 .net api 实现这个的方法? - Benjamin Martin
1
是的。我不熟悉 .net api,但是可以通过设置 DestinationTable 属性来实现。请看这里:https://developers.google.com/resources/api-libraries/documentation/bigquery/v2/csharp/latest/classGoogle_1_1Apis_1_1Bigquery_1_1v2_1_1Data_1_1JobConfigurationQuery.html#ab086707c20c7703b9c0a3d113fc71aa7 - oulenz

2

对于那些正在寻找C#解决方案的人,使用.NET客户端API(感谢oulenz的提示):

   public void ExecQueryIntoTable(string projectId, string dataSetId, string destinationTable, string query)
    {
        try
        {
            JobsResource jobResource = bigqueryService.Jobs;
            Job theJob = new Job();
            theJob.Configuration = new JobConfiguration()
            {
                Query = new JobConfigurationQuery()
                {
                    AllowLargeResults = true,
                    CreateDisposition = "CREATE_IF_NEEDED",
                    DefaultDataset = new DatasetReference() { ProjectId = projectId, DatasetId = dataSetId},
                    MaximumBillingTier = 100,
                    DestinationTable = new TableReference() { ProjectId = projectId, DatasetId = dataSetId, TableId = destinationTable },
                    Query = query
                }
            };

            var result = jobResource.Insert(theJob, projectId).Execute();
        }
        catch (Exception ex)
        {
            log.Fatal(ex, ex.Message + ", StackTrace: " + ex.StackTrace);
            throw;
        }
    }

我不知道上面的内容是否正确。 当使用大表时,上述的jobresource.Insert...可能无法完成(它是异步运行的,所以我需要检查状态,或者同步运行)- 我该如何做到这一点? - Eitan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接