1728253291
2024-10-06 22:02:34
sq 自由/自由です オープンソース データの検査、クエリ、結合、インポート、エクスポートを行うためのデータラングリングスイス式ナイフ。考えられるのは sq
として jq データベースとドキュメントの場合、次のようなワンライナーを容易にします。
sq '@postgres_db | .actor | .first_name, .last_name | .[0:5]'
インストール
brew install neilotoole/sq/sq
/bin/sh -c "$(curl -fsSL https://sq.io/install.sh)"
scoop bucket add sq https://github.com/neilotoole/sq
scoop install sq
助けを求めて、 sq help があなたの出発点です。そして、それを見てください。 ドキュメント。
この問題を邪魔にならないようにしましょう
sq のように発音されます 求める。そのクエリ言語、 SLQ、のように発音されます。 洗練された。
機能のハイライト
いくつかの機能のハイライトを以下に示します。詳細については、を参照してください。 ドキュメント、を含む クエリガイド、 チュートリアル そして 料理本。
差分データベーステーブル
を使用します。 差分 ソースのメタデータまたは行の値を比較するコマンド。
Excel ワークシートを Postgres テーブルにインポート
入れる Excel XLSX ワークシートの内容 (という名前のシートから) actor) という名前の新しい Postgres テーブルにコピーします。 xl_actor。インポート メカニズムは、データ型を保持しようとする点でかなり洗練されていることに注意してください。
JavaScript を使用せずにこの asciicast を実行するには、次を使用します。
asciinema play https://sq.io/casts/excel-to-postgres.castと アシネマ
データベースのメタデータを表示する
の --json にフラグを立てる sq inspect スキーマとその他のメタデータを JSON で出力します。通常、出力は jq にパイプされて、対象の要素が選択されます。
JavaScript を使用せずにこの asciicast を実行するには、次を使用します。
asciinema play https://sq.io/casts/inspect-sakila-mysql-json.castと アシネマ
MySQL テーブル内のすべての列の名前を取得する
JavaScript を使用せずにこの asciicast を実行するには、次を使用します。
asciinema play https://sq.io/casts/table-column-names-mysql.castと アシネマ
さらに簡単なのは、必要なテーブルのメタデータを取得するだけです。
sq inspect @sakila_my.actor -j | jq -r '.columns[] | .name'
SQL Serverに対してSQLクエリを実行し、結果をSQLiteに挿入します。
このスニペットは、(既存の) SQL Server ソースを追加し、新しい SQL Server ソースを作成します。 SQLite ソース。次に、生のネイティブ SQL クエリが実行されます。
SQLサーバー、結果は SQLite に挿入されます。
JavaScript を使用せずにこの asciicast を実行するには、次を使用します。
asciinema play https://sq.io/casts/sql-query-then-insert.castと アシネマ
すべてのデータベーステーブルをCSVにエクスポート
アクティブなソースの (JSON) メタデータを取得します。その JSON を jq にパイプし、テーブル名を抽出します。テーブル名をパイプして、 xargs、呼び出す sq テーブルごとに 1 回ずつ、テーブルごとに CSV ファイルを出力します。このスニペットは macOS でテストされました。
JavaScript を使用せずにこの asciicast を実行するには、次を使用します。
asciinema play https://sq.io/casts/export-all-tables-to-csv.castと アシネマ
代わりに使用したい場合は、 sql モード:
sq inspect -j | jq -r '.tables[] | .name' | xargs -I % sq sql 'SELECT * FROM %' --csv --output %.csv
ソースコマンド
へのコマンド 追加、 活性化、 動く、
リスト、 グループ、 ピング
または 取り除く ソース。
$ sq src # show active source
$ sq add ./actor.tsv # add a source
$ sq src @actor_tsv # set active source
$ sq ls # list sources
$ sq ls -v # list sources (verbose)
$ sq group # get active group
$ sq group prod # set active group
$ sq mv @sales @prod/sales # rename a source
$ sq ping --all # ping all sources
$ sq rm @actor_tsv # remove a source
JavaScript を使用せずにこの asciicast を実行するには、次を使用します。
asciinema play https://sq.io/casts/source-cmds.castと アシネマ
データベーステーブルコマンド
データベーステーブルに作用する便利なコマンド: コピー、 切り詰める、 落とす。
ご了承ください sq tbl copy 単一のデータベース内でのみ適用されます。あるデータベースから別のデータベースにテーブルをコピーする場合は、 --insert 機構。
$ sq tbl copy .actor .actor2 # copy table "actor" to "actor2", creating if necessary
$ sq tbl truncate .actor2 # truncate table "actor2"
$ sq tbl drop .actor2 # drop table "actor2"
JavaScript を使用せずにこの asciicast を実行するには、次を使用します。
asciinema play https://sq.io/casts/table-cmds.castと アシネマ
JSONL のクエリ (ログ ファイルなど)
JSONL 出力は 1 行あたり 1 行の JSON です (したがって「JSON 行」)。ログ出力の多くは次のようになります。使用できます sqさん自身の ログ 例として出力します。
{"level":"debug","time":"00:07:48.799992","caller":"sqlserver/sqlserver.go:452:(*database).Close","msg":"Close database: @sakila_mssql | sqlserver | sqlserver://sakila:xxxxx@localhost?database=sakila"}
{"level":"debug","time":"00:07:48.800016","caller":"source/files.go:323:(*Files).Close","msg":"Files.Close invoked: has 1 clean funcs"}
{"level":"debug","time":"00:07:48.800031","caller":"source/files.go:61:NewFiles.func1","msg":"About to clean fscache from dir: /var/folders/68/qthwmfm93zl4mqdw_7wvsv7w0000gn/T/sq_files_fscache_2273841732"}
JavaScript を使用せずにこの asciicast を実行するには、次を使用します。
asciinema play https://sq.io/casts/query-jsonl-log-file.castと アシネマ
#平方 #データをラングリングする