Выполните операцию вставки в bigquery через php - PullRequest
0 голосов
/ 14 сентября 2018

Я интегрирую bigQuery в мой облачный проект Google. Я выполнил все требования, необходимые для интеграции большого запроса. Теперь я хочу выполнить операцию вставки через мой php-файл. Я создал набор данных и таблицу в bigQuery.

  • Имя набора данных - userDetails
  • Имя таблицы - userInfo

Я хочу сделать вставку в эту таблицу через мой php-файл. До этого я сохранял данные пользователя в облачном хранилище данных, но теперь мое требование изменилось, и я хочу сохранить эти данные в bigQuery. Вот мой код для вставки значений в облачное хранилище данных :

$datastore = new Google\Cloud\Datastore\DatastoreClient(['projectId' => 'google_project_id']);
        $key = $datastore->key($entity_kind);

        $key->ancestor(parent_kind, key);
        $entity = $datastore->entity($key);

        /*------------- Set user entity properties --------------*/
        $entity['name'] = $username;
        $entity['date_of_birth'] = strtotime(date('Y-m-d H:i'));
        $entity['religion'] = $religion;

        $entity->setExcludeFromIndexes(['religion']);

        $datastore->insert($entity);

Точно так же, как я могу сделать это в большом запросе, а не в хранилище данных?

Спасибо!

1 Ответ

0 голосов
/ 14 сентября 2018

В Bigquery этот процесс называется потоковой вставкой.

У вас есть много примеров по Github samples

/**
 * For instructions on how to run the full sample:
 *
 * @see https://github.com/GoogleCloudPlatform/php-docs-samples/tree/master/bigquery/api/README.md
 */
namespace Google\Cloud\Samples\BigQuery;
// Include Google Cloud dependendencies using Composer
require_once __DIR__ . '/../vendor/autoload.php';
if (count($argv) < 4 || count($argv) > 5) {
    return print("Usage: php snippets/stream_row.php PROJECT_ID DATASET_ID TABLE_ID [DATA]\n");
}
list($_, $projectId, $datasetId, $tableId) = $argv;
$data = isset($argv[4]) ? json_decode($argv[4], true) : ["field1" => "value1"];
# [START bigquery_table_insert_rows]
use Google\Cloud\BigQuery\BigQueryClient;
/** Uncomment and populate these variables in your code */
// $projectId = 'The Google project ID';
// $datasetId = 'The BigQuery dataset ID';
// $tableId   = 'The BigQuery table ID';
// $data = [
//     "field1" => "value1",
//     "field2" => "value2",
// ];
// instantiate the bigquery table service
$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$dataset = $bigQuery->dataset($datasetId);
$table = $dataset->table($tableId);
$insertResponse = $table->insertRows([
    ['data' => $data],
    // 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']);
        }
    }
}
# [END bigquery_table_insert_rows]
...