Ubuntu 16.04 LTS + Perl で Linux版 SQL Server 2017 Express にアクセスしてみる

Ubuntu 16.04 LTS + PerlLinuxSQL Server 2017 Express にアクセスしてみる
 
LinuxSQL Server 2017 Express をインストールしたので ODBCでアクセスしてみる
Ubuntu 16.04 LTS + Perl + DBI::DBD + unixODBC <-> SQL Server 2017 Express
になるのかな?
※こういう検証用だとやはりPerlが楽だよなぁ・・・
 
環境はこちら
Ubuntu 16.04 LTS で SQL Server 2017 Express を試してみる
Ubuntu 16.04 LTS で SQL Server 2017 Express をもう少し試してみる
Ubuntu 17.10 + VsCode + Perl で Windows10 + SQL Server 2017 Express にアクセスする
 
参考にしたのは以下のサイト
perlモジュールのinstallにcpanmを使う
 
# perl -v
This is perl 5, version 22, subversion 1 (v5.22.1) built for x86_64-linux-gnu-thread-multi
(with 68 registered patches, see perl -V for more detail)
 
DBI::DBDのインストール
コンソールより、以下を実行する
# apt-get install perl-doc
# apt install cpanminus
# cpanm install DBD::ODBC (DBIはここでインストールされる)
# cpanm install DDP
 
・unixodbcは以下でツール系でまとめてインストールしている
Ubuntu 16.04 LTS で SQL Server 2017 Express を試してみる
 
・/etc/odbc.ini の設定
# for remote windows
[MSSQLWin10]
Driver = /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.1.so.0.1
Server = tcp:xxx.xxx.xxx.xxx\SQLEXPRESS,1433
Database = DEMO
ClientCharset = UTF-8
# for local ubuntu
[MSSQLLocal]
Driver = /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.1.so.0.1
Server = tcp:xxx.xxx.xxx.xxx,1433
Database = DEMO
ClientCharset = UTF-8
 
# odbcinst -i -d -f /etc/odbc.ini でインストールする
 
登録済の設定を表示する
# odbcinst -q -d
[ODBC Driver 17 for SQL Server]
[MSSQLWin10]
[MSSQLLocal]
 
指定した設定を削除する
# odbcinst -u -d -n MSSQLLocal
# odbcinst -u -d -n MSSQLWin10
 
サンプル(使いまわし)


use strict;
use utf8;
use DBI;

my $dbh=DBI->connect('dbi:ODBC:MSSQLLocal','demo','demo') or die $!;
my $sth=$dbh->prepare("select * from ZIPCODE") or die $dbh->errstr;

# 出力エラー対策
$sth->{LongTruncOk}=1;
$sth->{LongReadLen}=2000000;

$sth->execute or die $dbh->errstr;

while(my $arrayref = $sth->fetchrow_arrayref){
use DDP;
p $arrayref;
}

$sth->finish;
$dbh->disconnect;

perl samp0001.pl
\ [
[0] "00000001",
[1] "01101",
[2] "060",
[3] "0600000 ",
[4] "ホッカイド鐔\0",
[5] "サッポロシチュウオウク \0",
[6] "イカニケイサイガナイバアイ \0",
[7] "北海道 \0",
[8] "札幌市中央区 \0",
[9] "以下に掲載がない場合 \0",
[10] 0,
[11] 0,
[12] 0,
[13] 0,
[14] 0,
[15] 0
]