Как использовать оператор вставки в google-api для BigQuery в PHP - PullRequest
1 голос
/ 21 сентября 2019

Я пытаюсь создать страницу регистрации, где имя пользователя и пароль должны храниться в таблице пользователей в BigQuery.Я использую PHP и пробовал разные функции на API BigQuery для PHP, чтобы сделать это, но каждая попытка до сих пор не удалась.Было бы замечательно, если бы кто-то мог помочь с фрагментом кода для синтаксиса или других шагов, которые могут быть полезны для меня.

Я перепробовал все доступные справочные документы Google, и ни у кого нет достаточных деталей для операторов вставки.Поскольку это небольшие и одиночные вставки, мне не понадобятся потоковые вставки.

$ request = new Google_Service_Bigquery_QueryRequest ();

        $request->setQuery("INSERT INTO `Testing.users` (user,password,role) VALUE ('$userid','$password','$role')");

        $response = $bigquery->jobs->query($projectId, $request);

1 Ответ

1 голос
/ 21 сентября 2019

Настоятельно рекомендуется использовать потоковую вставку .Это намного быстрее, примерно до 300 мс, по сравнению с запросом синхронизации 2-3 секунды.

composer require google/cloud-bigquery

Однако, если вы хотите задание INSERT

, вы можете использовать:

use Google\Cloud\BigQuery\BigQueryClient;

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$dataset = $bigQuery->dataset($datasetId);

$sql="INSERT INTO `test_table` (`name`, `title`) VALUES ('Brent Shaffer', 'PHP Developer')";

$queryConfig = $bigQuery->query($sql)->defaultDataset($dataset);
$bigQuery->runQuery($queryConfig);

для потоковой вставки, пример здесь

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$dataset = $bigQuery->dataset($datasetId);
$table = $dataset->table($tableId);
$insertResponse = $table->insertRows([
    ['col1' => $val1,'col2' => $val2],// <-- this was a row
    // additional rows can go here
]);
if ($insertResponse->isSuccessful()) {
    print('Data streamed into BigQuery successfully' . PHP_EOL);
} else {
    foreach ($insertResponse->failedRows() as $row) {
        foreach ($row['errors'] as $error) {
            printf('%s: %s' . PHP_EOL, $error['reason'], $error['message']);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...