Настоятельно рекомендуется использовать потоковую вставку .Это намного быстрее, примерно до 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']);
}
}
}