FileGeoDataBaseをMSSQLにインポートする手順(Windows)

# はじめに
この記事では、Windows環境におけるFGDB(File GeoDatabase)形式のデータをMicrosoft SQL Serverにインポートする方法を解説します。

1. Microsoft SQL Serverのインストール
1. SQL Server Management Studioのインストール
1. SQL Serverに接続
1. File Geodatabaseファイルのインポート
1. 参考

File Geodatabaseについての基本情報
> File Geodatabase（ファイルジオデータベース）とは、ESRI（Environmental Systems Research Institute）が開発した地理情報システム（GIS）用のデータストレージ形式の一つです。主に以下の特徴があります：
> 1. **フォルダー構造**: File Geodatabaseは、特定のフォルダー内に格納され、複数のファイルを使用してデータを管理します。
> 2. **拡張子**: 通常、File Geodatabaseは`.gdb`という拡張子を持つフォルダーとして保存されます。
> 3. **データの種類**: 空間データ（ポイント、ライン、ポリゴンなど）や属性データ（テーブル）を格納できます。
> 4. **データの容量**: 一つのFile Geodatabaseは最大で1TBのデータを格納できるため、大規模なデータセットに適しています。
> 5. **トランザクション管理**: 複数のユーザーによる同時アクセスをサポートし、データの整合性を保つためのトランザクション管理機能を備えています。

File Geodatabaseは、ArcGISなどのGISソフトウェアで広く使用されており、地理情報を効率的に管理・分析するための強力なツールです。

# 手順
### 1.Microsoft SQL Serverのインストール
Microsoftの公式サイトから、MSSQLのインストーラーをダウンロードします。

::: note 
自分の場合はSQL Server Version 2022をインストールしました。
https://www.microsoft.com/ja-jp/evalcenter/download-sql-server-2022
:::

インストーラーを実行します。

::: note 
Basic, Custom, Download Mediaの3種類がありますが、自分の場合はBasicを選択したので下記はBasicを選択した場合の手順となります。
:::

Terms&Conditionを確認し、Installを実行します。

### 2.SQL Server Management Studioのインストール

::: note warn
SQL Serverのインストール完了後に表示されるポップからSSMSのインストールしても同じ作業になります。
コマンドベースでSQL Serverを操作される方はこの手順は必要ありませんが、この記事ではコマンドベースでの操作に関しては説明しておりません。
:::

https://learn.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16
 
- Install先を確認し、Installを実行します。
自分の場合は、AuthenticationはWindows Authenticationを指定し他はデフォルトのまま使用しました。
- Trust Server Certificateにチェックを入れ、接続します。

- 念のため、SQL Serverが起動しているか確認します。
SQL Server Configuration Managerを起動します。
左側のツリーの[SQL Server Configuration Manager(Local)] - [SQL Services] - [SQL Server (Server名)]がRunningになっていることを確認します。

### 3.SQL Serverに接続

SQL Server Management Studioを起動し、Serverに接続します。
- Server Type: Database Engine
- Server name: Your Server Namae
- Authentication: Windows AUthentication
- Encryption: Mandatory
- Trust server certificate: ON

::: note warn
SQL Server Management Studioのインストール時のAuthenticationでSQL Serverを選択した場合は、作成したアカウントでServerに接続してください。
:::

### 4.File Geodatabaseファイルのインポート

::: note warn
本記事では、ODBC Driver 17 for SQL Serverを使用しております。環境に合わせて変更してください。
:::

本記事では、以下のオプションを指定していますが、必要に応じて使い分けでください。
<dt>-a_srs<dt>
<dd>出力データの座標参照系（SRS）を指定するオプションです。
EPSG:4326は、WGS84（世界測地系）を示し、緯度・経度の座標系です。<dd>
<dt>--config<dt>
<dd>SQL Server内でジオメトリカラムを使用することを指定しています。<dd>
<dt>-nln<dt>
<dd>新しいテーブル名を指定するオプションです。ただし、対象ファイル内のすべてのレイヤーをインポートする場合は、このオプションは指定しません。<dd>
<dt>指定するレイヤー名<dt>
<dd>特定のレイヤーを指定する場合はレイヤー名を指定します。レイヤー名の検索については[5.参考]に記載します。ただし、対象ファイル内のすべてのレイヤーをインポートする場合は、このオプションを指定しません。<dd>

- AuthenticationがWindows Authenticationの場合
```
ogr2ogr -f "MSSQLSpatial" "MSSQL:driver={ODBC Driver 17 for SQL Server};server=localhost;database=[データベース名];Trusted_Connection=yes" [.gdbのファイルパス] -a_srs EPSG:4326 --config MSSQLSPATIAL_USE_GEOMETRY_COLUMN YES -nln [テーブル名] [指定するレイヤー名]
```

- AuthenticationがSQL Serverの場合
```
ogr2ogr -f "MSSQLSpatial" "MSSQL:driver={ODBC Driver 17 for SQL Server};server=localhost;database=[データベース名];uid=[ユーザID];pwd=[パスワード]" [.gdbのファイルパス] -a_srs EPSG:4326 --config MSSQLSPATIAL_USE_GEOMETRY_COLUMN YES -nln [テーブル名] [指定するレイヤー名]
```

### 5.参考
#### SQL Server認証を追加
自分が直面したエラーについて記載します。
SQL Serverセットアップ時にWindows Authenticationを指定した場合かつ
- SQL Server認証も追加したい
- ogr2ogrコマンドで、UserID/Passwordでコマンド実行したい
場合は、下記を参考にしてください。

- Serverの認証方法を変更します。
    - サーバーを右クリック
    - Securityタブを選択
    - Server authenticationを[SQL Server and Windows Authentication mode]を選択します。

#### ログインユーザーを作成
サーバー直下の[Security - Logins]を右クリックし、[New Login]をクリックします。
必要な情報を記入し、[OK]をクリックします。

#### ODBCドライバの確認
- 「スタート」メニューを開き、「ODBC」と入力します。
- 「ODBCデータソース（32ビット）」または「ODBCデータソース（64ビット）」を選択します。
- ODBCデータソースアドミニストレーターが開いたら、「ドライバ」タブをクリックします。
- インストールされているODBCドライバの一覧が表示されます。

#### File Geodatabaseのレイヤー一覧を取得
一部のレイヤーのみを抽出したい場合に、レイヤー名を知る必要があります。レイヤー名を調べるには、下記のコマンドを実行します。

```
ogrinfo -al -so [.gdbファイルパス]
```

<dt>-al<dt>
<dd>allの略です。このオプションを使用すると、指定したデータソース内のすべてのレイヤー情報を表示します。<dd>
<dt>-so<dt>
<dd>summary onlyの略です。このオプションを使用すると、レイヤーの簡潔な概要情報のみを表示します。詳細な情報を見る場合は、このオプションは指定しません。<dd>


## まとめ
本手順で、File GeodatabaseをMSSQLのデータベースにインポートすることができました。
現状、インポート後のテーブルのフィルードの文字化けに対応できていないので、今後対応方法がわかりましたら、追加いたします。