狠狠撸

狠狠撸Share a Scribd company logo
SQL ServerからPostgreSQLに移行してみた
自社パッケージのDBを
株式会社インプリム
CEO 内田 太志
第16回 PostgreSQLアンカンファレンス
自己紹介
中野が大好き?
株式会社インプリム
CEO 内田 太志
1998年 株式会社富士通エフサス(約19年)
2017年 株式会社インプリム設立 ~ 現在4期目
? 主にインフラの運用、保守、プロマネ
? 効率化大好き! プログラミング好き
? ASP.NET / SQL Server / VB
オープンソースのWebデータベース
プリザンター開発中!
プリザンターとは
ノンプログラミングで素早く簡単に業務アプリケーションが作成で
きるオープンソースソフトウェアです。 Excel や E-mail で行ってい
務を高機能なWebシステムに置き換えることが可能です。
担当者顧客問合せ
案件
保守
自由に項目が設定
できる編集画面
見やすく使い勝手
のよい一覧画面
マウス操作で
簡単に紐づけ
いつでも柔軟
に拡張可能
紐づけの階層
に制限なし
関連データを
CSV出力可能
Web画面を素早く簡単に作成 複数のデータを自在に紐づけ
移行のイメージ
プリザンターの顿叠アクセス
DEMO
自社パッケージのDBをSQL ServerからPostgreSQLに移行してみた
① セットアップ時のスキーマ作成
No 項目 SQL Server PostgreSQL
1 スキーマ情報の取得 sys.columns / sys.tables /
sys.types
information_schema.columns
2 テーブル名 sys.tables.name table_name
3 カラム名 sys.columns.name column_name
4 タイプ名称 sys.types.name udt_name
5 データ長 sys.columns.max_length character_octet_length
6 有効桁数 / 小数点以下桁数 sys.columns.precision /
sys.columns.scale
numeric_precision /
numeric_scale
7 NULL許可 sys.columns.is_nullable is_nullable = 'YES'
8 IDENTITY sys.columns.is_identity is_identity = 'YES'
9 PK名、インデックス名 最大128Byte 最大63Byte
10 降順インデックス 更新日時降順を設定 昇順で設定しておきorder byで
対応
11 ユーザ作成 create login create user
② Webアプリによるデータアクセス
項目 SQL Server PostgreSQL
1 変数名 @変数名 変数名
2 カラム名 大文字?小文字混在可能
[ColumnName] で指定
小文字
“ColumnName” で指定
3 上位X件 top x limit x
4 作用した行の取得 @@rowcount RETURNING
5 IDの取得 @@identity RETURNING id
6 getdate関数 getdate関数 CURRENT_TIMESTAMP
7 dateadd関数 dateadd関数 + interval '3 day'
8 try_cast関数 try_cast関数 case式
9 Bool 1 / 0 true / false
10 ログイン時のユーザ名検索 like演算子で照合 lower関数で小文字に変換して
照合
11 データベースサイズ EXEC sp_spaceused pg_database_size
12 フルテキスト検索 述語containsで検索 pg_trgmモジュールを使用し類
似文字列を高速検索
③ SQL Serverからのデータ移行
No 項目 SQL Server PostgreSQL
1 C# 接続クラス SqlConnection NpgsqlConnection
2 C# コマンドクラス SqlCommand NpgsqlCommand
3 シーケンス SET IDENTITY_INSERT
TableName ON/OFF
INSERT後にsetval
ご清聴ありがとうございました
プリザンター 検索

More Related Content

自社パッケージのDBをSQL ServerからPostgreSQLに移行してみた