Open5
DuckDB
良さげな記事が集まっている。
Excelのシート(日本語)含むやつもサクッと読めてしまう。(すごい)
INSTALL spatial;
LOAD spatial;
SELECT Field6 FROM st_read('XXX.xlsx', layer='2018年度')
結果サンプル
┌─────────┬──────────────────────┬─────────┬───────────────────┬───┬─────────┬─────────┬─────────┬─────────┬─────────┐
│ Field1 │ Field2 │ Field3 │ Field4 │ … │ Field19 │ Field20 │ Field21 │ Field22 │ Field23 │
│ varchar │ varchar │ varchar │ varchar │ │ varchar │ varchar │ varchar │ varchar │ varchar │
├─────────┼──────────────────────┼─────────┼───────────────────┼───┼─────────┼─────────┼─────────┼─────────┼─────────┤
│ │ │ │ │ … │ │ │ │ │ │
│ │ 2018年度(認定申請… │ │ │ … │ │ │ │ │ │
│ │ 表2-4 性・年齢階… │ │ │ … │ │ │ │ │ │
│ │ │ │ │ … │ │ │ │ │ │
│ │ 性別 │ │ 年齢階級別 │ … │ │ │ │ │ │
│ │ │ │ │ … │ │ │ │ │ │
│ │ 総数 │ │ │ … │ │ │ │ │ │
│ │ 男性 │ │ 総数 │ … │ │ │ │ │ │
│ │ │ │ 65歳未満 │ … │ │ │ │ │ │
│ │ │ │ 65-69歳 │ … │ │ │ │ │ │
│ │ │ │ 70-74歳 │ … │ │ │ │ │ │
CAST関数もある。
SELECT CAST(Field6 as INTEGER) FROM st_read('001180438.xlsx', layer='2018年度_表2-4') WHERE Field4 Like '%65-69歳%';
┌─────────────────────────┐
│ CAST(Field6 AS INTEGER) │
│ int32 │
├─────────────────────────┤
│ 54830 │
│ 44860 │
└─────────────────────────┘
ただ、CAST失敗するとエラーになってしまうので、CASTした後に例えば数値比較する際にはTRY_CASTを使うのが良さそう。
SELECT TRY_CAST(Field6 as INTEGER) as TOTAL FROM st_read('001180438.xlsx', layer='2018年度_表2-4') WHERE TOTAL > 5000;
TRY_CAST can be used when the preferred behavior is not to throw an error, but instead to return a NULL value. TRY_CAST will never throw an error, and will instead return NULL if a cast is not possible.
ここにまとめてあった。