2016-03-02 2 views
3

Привет я могу создать таблицу из старой таблицы, используя SQL в MSSQL или Oracle, как это:Создать таблицу из Выбрать BigQuery

Select * into new_table from old_table; 

Можно ли это сделать в BigQuery? Я получил сообщение об ошибке при вводе в консоль: «Ошибка: встречается» «INTO» «INTO» в строке 2, колонка 1. Ожидалось: «.

У меня есть выбор с встроенной функцией, определяемой пользователем. Мне нравится делать вывод этого выбора и хранить его в отдельной таблице.

+0

это хорошая практика (и вы можете definitelly это сделать), чтобы ответить на ваш собственный вопрос, если вы чувствуете, что у вас есть хороший (как это выглядит в этом случае). общее правило здравого смысла заключается в том, чтобы держать ответ отдельно от вопроса –

+0

да, вы правы :). –

ответ

3

Вы не можете использовать into, но вы можете нажать «показать параметры» и выбрать там таблицу.

+0

Thx dude, есть ли способ сделать это через .net api? –

+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 Client API (Thx 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; 
     } 
    } 
+0

Я не знаю, правильно ли указано выше. При использовании больших таблиц приведенный выше аргумент jobresource.Insert ... может быть не закончен (он выполняется асинхронно, поэтому мне нужно проверить состояние или запустить его синхронно). Как я могу это сделать? – Eitan

Смежные вопросы