🎃
LaravelからBigQueryのテーブルにインサート
LaravelからBigQueryのテーブルにインサートする方法です。
環境
Laravel6 LTS
PHP7.4
schulzefelix/laravel-bigquery (version1.2.0)
Laravelへのインストール手順
1. schulzefelix/laravel-bigquery (version1.2.0)のインストール
Laravel6は最新のパッケージでは非対応なので、version1.2.0を指定してインストールする。
//パッケージのインストール
composer require schulzefelix/laravel-bigquery:1.2
//設定ファイルの生成
php artisan vendor:publish --provider="SchulzeFelix\BigQuery\BigQueryServiceProvider"
2. .envにサービスアカウントのjsonのフルパス設定、プロジェクトIDの設定
#BigQuery
GOOGLE_CLOUD_APPLICATION_CREDENTIALS=/var/www/html/file.json
GOOGLE_CLOUD_PROJECT_ID=project_id
使用方法
try {
//queryのセット
//BigQueryで有効なインサート文を設定
$rawQuery = ' INSERT INTO dataset.`table` (column1 ,column2)VALUES(data1,data2)';
//query設定
$query = \BigQuery::query($rawQuery );
//queryを実行
$result = \BigQuery::runQuery($query);
//データ挿入に成功ならtrue
var_dump($result->isComplete());
//結果情報を取得
var_dump($result->info());
} catch (\Exception $e) {
//インサートの失敗はエラーでスローされる。
//カラム間違い、データの型間違いでスローを確認
var_dump($e->getMessage());
}
エラーメッセージ例
{ "error": { "code": 400, "message": "Value has type STRING which cannot be inserted into column event_type, which has type INT64 at [1:99]", "errors": [ { "message": "Value has type STRING which cannot be inserted into column event_type, which has type INT64 at [1:99]", "domain": "global", "reason": "invalidQuery", "location": "q", "locationType": "parameter" } ], "status": "INVALID_ARGUMENT" } }
Discussion