ITエンジニアとして経験・学習したこと

ITエンジニアとして経験したり学習したことを忘れないよう、書いていきたいと思います。少しでも皆様のお役に立てれば幸いです。

GCP(Google Cloud Platform)を使ってみた

やってみたこと

  1. Google Compute Engine(GCE)を利用した、仮想マシン(SQLServer搭載)の作成
  2. Google Cloud Storage(GCS)内へのストレージの作成、ファイルの配置
  3. GCS内に配置したファイルを、仮想マシン(SQLServer搭載)に転送
  4. 仮想マシン(SQLServer搭載)上のファイルデータをSQLServer内テーブルに格納

 

GCEによる仮想マシン(SQLServer搭載)の作成

Google Cloud Platform(GCP)の管理画面にログインし、[VMインスタンス]メニューを選択し、アプリケーションイメージタブでSQLServerイメージを選択した状態のインスタンスを作成すれば、SQLServerを搭載した仮想マシンを作成できる。

また、作成した仮想マシンへは、Windowsメニューのリモートデスクトップ接続により接続できる。

なお、仮想マシンを作成する際、マシンタイプ(コア数・メモリ・ディスク)を自由に選択できる。CPUの中心部分であり実際の処理を担っている場所のことを「コア」といい、基本的に、コア数が多いほどコンピュータが処理可能な作業数が増える。

また、SQLServerを搭載していないWindowsサーバーやLinuxサーバーも作成できる。

 

以下の記事にて、GCPログイン用のアカウント作成と、SQLServerを搭載した仮想マシンの作成手順について記載している。

www.purin-it.work

 

www.purin-it.work

 

GCS内へのストレージの作成、ファイルの配置

Google Cloud Platform(GCP)の管理画面にログインし、Cloud Storageブラウザを開くことで、ストレージバケットを作成したり、作成したストレージバケットにファイルを配置したりすることができる。

なお、データを格納する基本的なコンテナ(分離された空間)のことをストレージバケットといい、GCS内に保存するデータは全てストレージバケット内に格納する必要がある。

 

GCS内に配置したファイルを、仮想マシン(SQLServer搭載)に転送

Google Cloud Storage(GCS)内に配置したファイルを仮想マシン(SQLServer搭載)に転送するには、仮想マシン上でgsutil cpコマンドを実行すればできる。

仮想マシンに、リモートデスクトップ接続で接続した後で、Cloud Shellを起動する。その後、Cloud Shellコンソール上で、

gsutil cp gs://[バケット名]/[ファイル名] [コピー先へのファイルパス]

例:gsutil cp gs://test_bucket/test.tsv C:\tmp\

と実行すれば、仮想マシン上にファイルがコピーされる。

なお、Cloud Shellの起動アイコンは、仮想マシンのデスクトップに配置されていて、すぐに使える状態になっている。Cloud Shellを利用すれば、Google Cloud Platform(GCP)内のコンピューティングリソースに、コマンド操作にてアクセスすることができる。

cloud.google.com

 

以下の記事にて、GCS内へのストレージ作成・ファイル配置と、仮想マシンへのファイル転送について記載している。

www.purin-it.work

 

 

仮想マシン上のファイルデータをSQLServer内テーブルに格納

仮想マシン上で、SQL Server Management Studio(SSMS)を起動し、格納したいテーブルを含むデータベースに接続した上で、「新しいクエリ」入力画面を開く。

その後、「新しいクエリ」入力画面にて、BULK INSERT文を実行する。

 

BULK INSERT文は、

BULK INSERT テーブル名 FROM ファイルパス 

WITH (

           FIRSTROW = 読み込み開始行

  , FIELDTERMINATOR = '区切り文字'

  , ROWTERMINATOR = '改行文字'

  , CODEPAGE = '文字コードのコードページ番号'

  , DATAFILETYPE = 'データ形式');

例:BULK INSERT dbo.sales FROM 'C:\work\sqlserver\insert_sales.tsv'

WITH (

                    FIRSTROW = 2                   // 読み込み開始行2行目を指定

    , FIELDTERMINATOR='\t'     // タブ区切りを指定

    , ROWTERMINATOR='\n'      // 改行文字は'\n'を指定

    , CODEPAGE = '65001'         // 文字コード'UTF-8'を指定

    , DATAFILETYPE = 'Char');   // データ形式は文字を指定

という構文になる。

 

BULK INSERT文の詳細については、以下が参考になる。

docs.microsoft.com

 

以下の記事にて、BULK INSERT文を利用したSQLServerへのデータロードについて記載している。

www.purin-it.work