概要
録画ワークシート(.ods)をCSVで保存し、SQLでグループ集計する。
環境
- Windows 11 Pro (64bit)
- Microsoft Access database engine 2016 (English)
- LibreOffice Calc
手順
CSVファイルの用意
録画.odsをCSVで名前を付けて保存する。
ファイル名:録画.csv
ファイルの種類:テキストCSV(*.csv)
文字コード:日本語(Windows-932) 或いはShift-JIS
フィールドの区切り記号:,
CSVファイルの加工
日付項目はその日の先頭行以降は省いているため補間する。
日付、タイトル項目を抽出。
JScriptファイルはANSI(Shift-JIS)で保存する。
/*
cscript //Nologo csvproc.js < 録画.csv > rokuga.csv
*/
{
var d;
while (! WScript.StdIn.AtEndOfStream) {
var rec = WScript.StdIn.ReadLine();
var f = rec.split(",");
if (f[2]) {
d = f[2];
}
var fld = [d, f[8]];
WScript.StdOut.WriteLine(fld.join());
}
}
ファイルDSNの作成
スタートメニューをクリックし、odbcと入力して「ODBCデータソースアドミニストレーター(64ビット)」を起動する。
「ファイルDSN」タブの追加ボタンをクリックする。
ドライバーから「Microsoft Access Text Driver (*.txt, *.csv)」を選択しdsnファイルを作成する。
設定はデフォルト値で。
Microsoft Access データベース エンジン 2016 再頒布可能コンポーネント(accessdatabaseengine_X64.exe)が必要。
[ODBC]
DRIVER=Microsoft Access Text Driver (*.txt, *.csv)
UID=admin
UserCommitSync=Yes
Threads=3
SafeTransactions=0
PageTimeout=5
MaxScanRows=25
MaxBufferSize=2048
FIL=text
Extensions=txt,csv,tab,asc
DriverId=27
DefaultDir=C:\Projects\etc\db
Schema.iniの用意
ANSI(Shift-JIS)で保存する。
[rokuga.csv]
Format=CSVDelimited
ColNameHeader=True
MaxScanRows=25
CharacterSet=932
Col1=日付 Text
Col2=タイトル Text
Schema.ini ファイル (テキスト ファイル ドライバー) - Open Database Connectivity (ODBC) | Microsoft Learn
グループ集計
JScriptファイルはANSI(Shift-JIS)で保存する。
/*
cscript //Nologo group.js > result.csv
*/
{
var cn = WScript.CreateObject("ADODB.Connection");
cn.Open("FileDSN=./hoge.dsn;");
var sql = "select min(日付),count(*),タイトル"
+ " from [rokuga.csv]"
+ " group by タイトル having count(*)>1"
+ " order by 1";
var rs = cn.Execute(sql);
for ( ; ! rs.EOF; rs.MoveNext()) {
var fld = [];
for (var i = 0; i < 3; i++) {
fld[i] = rs(i);
}
WScript.Echo(fld.join("\t"));
}
rs.Close();
cn.Close();
}
Microsoft OLE DB Provider for ODBC - ActiveX Data Objects (ADO) | Microsoft Learn
おまけ
総務省|地方行政のデジタル化|全国地方公共団体コード
から「都道府県コード及び市区町村コード」000925835.xls
をダウンロード。CSVファイルで保存。
ヘッダ行の改行を修正する。
[000925835.csv]
Format=CSVDelimited
ColNameHeader=True
MaxScanRows=25
CharacterSet=932
/*
cscript //Nologo shin.js > result.csv
*/
{
var cn = WScript.CreateObject("ADODB.Connection");
cn.Open("FileDSN=./hoge.dsn;");
var sql = "select * from [000925835.csv]"
+ " where 市区町村名(漢字) like '%新%'";
var rs = cn.Execute(sql);
for ( ; ! rs.EOF; rs.MoveNext()) {
var fld = [];
for (var i = 0; i < 5; i++) {
fld[i] = rs(i);
}
WScript.Echo(fld.join("\t"));
}
rs.Close();
cn.Close();
}