読者です 読者をやめる 読者になる 読者になる

SQLServer小技集

どうも!三和システムおちゃらけ担当のuozy☆です!

さて今回はSQLServerにまつわるちょっと便利な小技達をご紹介します。


データをDBに取込む方法

開発時にCSVでデータ貰ったりしたことありますよね?よくわからないカラムに変な値が入っててイライラ・・・なんて経験は誰にもあると思います。しかも、そういう時に限って何千行だったりするんですよね orzそんな時はみなさんどうしてるのでしょうか?Excelテキストエディタで気合いを出して加工なんてことは出来ればさけたいところですね。 uozy☆の場合はというと即刻DBに取り込んでしまいます\(^o^)/ やっぱりデータ扱うにはDBが便利ですからね。
一番簡単なのはインポートウィザードを使ったデータ取込です。ウィザードで取込先のテーブルも勝手に作ってくれて便利なので、使ったことがある方も多いと思います。が、このウィザード難点があって、取込むデータが少なかったり、素直なデータの場合はすんなりと取り込めるんですがちょっと複雑なデータだったりするとすぐエラーで取り込めなくなってしまいます。しかもエラーの内容がよく分からないし、対処方法をググってもあんまり出てこないという残念仕様。 これを回避しながら取り込む方法がコレ↓

  1. SQLServerManagementStudioを起動しDBインスタンスを作る
  2. 右クリックで「タスク」→「データのインポート」
  3. ウィザードが出てくるので「次へ」
  4. データソースを「フラットファイルソース」にし、ファイル名を指定
  5. 左側のリストボックス内の「詳細設定」を選択
  6. DataTypeを「Unicode 文字列 [DT_WSTR]」に変更し「OutputColumnWidth」を桁あふれしないくらいの大きさに設定 ←ここ重要!※Shiftを押しながらカラム名複数選択出来るので一括設定可能!!
  7. あとはウィザードに沿って設定していけばOKです

複数のALTERスクリプトを生成する方法

SQLServerManagementStudioからオブジェクトのスクリプトを生成出来ることをご存知の方は多いかもしれません。 ただこれ謎仕様で複数オブジェクトになると何故かCreate文しか生成出来なくなります。 そんな時はこの方法で回避できます。

  1. Create文のスクリプトを生成する。
  2. 生成したCreate文の[CREATE]を[ALTER]に置換する。

これが一番てっとり早いですね。 いろいろ方法を探し回りましたがこれが一番簡単な方法でした。

MySQLとリンクサーバーする方法

必要なもの * MySQL :: Download Connector/ODBC まずは上記のコネクタをインストールしてください。

  1. SQLServerManagementStudioより「サーバーオブジェクト」→「リンクサーバー」→右クリック「新しいリンクサーバー」
  2. [リンクサーバー]に任意の名前を入力
  3. [サーバーの種類]を「その他のデータソース」に設定
  4. [プロバイダー]を「Microsoft OLE DB Provider for ODBC Drivers」に設定
  5. [製品名]に「MySQL」を入力
  6. [プロバイダー文字列]を設定
(Driver={MySQL ODBC 5.3 Unicode Driver};SERVER=XXX;Port=3306;DATABASE=hogehoge;USER=hoge;PASSWORD=hoge;)

なおリンク先のデータを取得する場合はOPENQUERY関数を使用してください。

SELECT
    id
    ,hogehoge
FROM
    OPENQUERY([linkservername],'select * from tablename')

って事で小技3連発でした!

バイバーイ\(^o^)/