【Automator】CSVファイルをSQLに変換してデータベース(SQLite)に格納する

SQLite3で作成したデータベースに対し、Automatorを利用してSQLを発行しデータ操作をすることが可能です。

SQLite3は、「.import」コマンドでCSVデータを取り込むことが可能ですが、今回は、CSVファイルのデータを、Automator経由でデータベースに格納してみたいと思います。

【Automator】Mac標準搭載のRPAツールで処理自動化 (画像選択してサイズ変更するサンプルあり)

2022年11月7日

目次

事前準備

データベースの用意

前にDropTable文で、テーブルデータを消してしまったので、再度テーブルを作成します。

CREATE TABLE list(
MEI_CODE TEXT NOT NULL ,
MEI_MS TEXT  NOT NULL ,
TRA_DATE TEXT NOT NULL ,
PRICE REAL  NOT NULL ,
ST_PRI REAL  NOT NULL ,
HI_PRI REAL  NOT NULL ,
LW_PRI REAL  NOT NULL ,
VOLUME INTEGER  NOT NULL ,
UNIQUE(MEI_CODE,TRA_DATE)
);

元ネタCSVファイル

workフォルダ > Data.csv

9999,禄太システム,20220101,2950,3000,3100,2000,110000
9999,禄太システム,20220102,3000,2950,3200,2950,120000
9999,禄太システム,20220103,3050,3000,3250,3000,130000

ワークフローレシピ(イメージ)

ワークフロー構成

Automatorのメリット
  1. クリップボードの内容を取得
  2. CSVをSQLに変換
  3. SQLを適用
  4. 結果を表示

【解説】①クリップボードの内容を取得

CSVファイルを、エディタで開きます。

開いたら、全選択(command+a)して、コピー(command+c)します。

クリップボードにコピーされた状態で、ワークフローを実行すると、クリップボード内の値を、Automatorが読み込んでくれます。

【解説】②CSVをSQLに変換

①でコピーしたクリップボード内のCSVを、SQLに変換します。

SQLは、【前】【行ごと】【後】の3パターンを指定できます。

今回は、1行ずつSQLを発行したいので、【行ごと】を選択します。

Insert into list(MEI_CODE,MEI_MS,TRA_DATE,PRICE,ST_PRI,HI_PRI,LW_PRI,VOLUME)   values('%{1}@', '%{2}@', '%{3}@', %{4}@, %{5}@, %{6}@, %{7}@, %{8}@); 
禄太
使い方は、Automatorの左下に詳細が書かれています!
%{field}@フォーマットで記載するのが、基本です。
ちなみに、文字列としたい場合は、'(シングルクォーテーション)を付することで、実現できました。

入力の現在行に含まれるフィールドの値を置き換える場合は、%{field}@フォーマットを使用してください。fieldは、1から始まるフィールドの番号です。入力の前または後にSQLを置く場合は、現在の行が入力の最初の行になります。

Apple inc

【解説】③SQLを適用

SQLを適用したいデータベースを指定します。

データベースは、ドロップダウンリストで指定することができます。

実行結果

Data.csvのデータをコピーして、ワークフローを実行します。

実行して成功すると、左上に緑のチェックマークがつきます。

ログが、正常終了していたら、完了です。

データの中身の確認(ターミナルで実行)

ターミナルからSQLiteを起動して、データが入っていたら成功です!

sqlite> select * from list;
9999|禄太システム|20220101|2950.0|3000.0|3100.0|2000.0|110000
9999|禄太システム|20220102|3000.0|2950.0|3200.0|2950.0|120000
9999|禄太システム|20220103|3050.0|3000.0|3250.0|3000.0|130000

EOF

大量のデータを投入したり、SQLを発行する際に便利かなと思い作ってみました。

どなたかのお役に立てたら幸いです。

今日も、一緒に勉強してくださって、ありがとうございました!

では、また!