5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DuckDBのチョイ小技

Posted at

この記事について

DuckDB Advent Calendar 2025 の4日目として記事を書く。内容は自分向け。

Disclamer

この記事の内容は、私個人の意見や見解であり、私が所属する組織の公式な立場、方針、意見を反映するものではありません。この記事の内容について、組織はいかなる責任も負いません。

DuckDB CLI の便利技の紹介

Dot Commands のページからいくつか便利なものを紹介する。

.sh でシェルコマンド

公式では .shell CMD ARGS... とあるが、実は .sh と省略が可能である。
.sh ls -aF などで自分はよくファイルを確認する。

カラムを全表示したい

方法1

.maxwidth {n} の指定を使う。思い切って .maxwidth 1000 ぐらいやっておくと潔い。ただし terminal 上では折り返しで非常に見ずらい。 .maxwidth 0 でコンソール幅自動描画に戻せる。

D .maxwidth 1000
D FROM duckdb_extensions() limit 2;
┌────────────────┬─────────┬───────────┬───────────────────────────────────────────────────────────────────────┬──────────────────────────────────────────────┬───────────┬───────────────────┬───────────────────┬────────────────┐
 extension_name  loaded   installed                              install_path                                               description                    aliases   extension_version    install_mode     installed_from 
    varchar      boolean   boolean                                  varchar                                                   varchar                     varchar[]       varchar            varchar          varchar     
├────────────────┼─────────┼───────────┼───────────────────────────────────────────────────────────────────────┼──────────────────────────────────────────────┼───────────┼───────────────────┼───────────────────┼────────────────┤
 autocomplete    true     true       (BUILT-IN)                                                             Adds support for autocomplete in the shell    []         v1.4.2             STATICALLY_LINKED                 
 aws             false    true       /home/kmkm/.duckdb/extensions/v1.4.2/linux_amd64/aws.duckdb_extension  Provides features that depend on the AWS SDK  []         55bf362            REPOSITORY         core           
└────────────────┴─────────┴───────────┴───────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────┴───────────┴───────────────────┴───────────────────┴────────────────┘
.maxwidth 0

方法2

.columns を実行すると列ベースで表示される

D .columns
D FROM duckdb_extensions();
┌───────────────────┬───────────┬──────────────────────┬───┬──────────────────────┬──────────────────────┐
      Column          Type            Row 1                   Row 25                Row 26        
├───────────────────┼───────────┼──────────────────────┼───┼──────────────────────┼──────────────────────┤
 extension_name     varchar            autocomplete                      ui                   vss 
 loaded             boolean                    true                   false                 false 
 installed          boolean                    true                   false                 false 
 install_path       varchar              (BUILT-IN)                                               
 description        varchar     Adds support for a     Adds local UI for    Adds indexing supp 
 aliases            varchar[]                    []                      []                    [] 
 extension_version  varchar                  v1.4.2                                               
 install_mode       varchar       STATICALLY_LINKED           NOT_INSTALLED         NOT_INSTALLED 
 installed_from     varchar                                                                       
├───────────────────┴───────────┴──────────────────────┴───┴──────────────────────┴──────────────────────┤
 26 rows (3 shown)                                                                            9 columns 
└────────────────────────────────────────────────────────────────────────────────────────────────────────┘

.rows で戻す。

方法3

.mode lines.mode で表示形式の変更もありだが行が多いとスクロールされるので若干不便なため lmit 句 を入れると良い。 .mode duckbox で mode をデフォルトに戻せる。.help mode で一覧を見れる。

D .mode lines
D FROM duckdb_extensions() limit 2;
   extension_name = autocomplete
           loaded = true
        installed = true
     install_path = (BUILT-IN)
      description = Adds support for autocomplete in the shell
          aliases = []
extension_version = v1.4.2
     install_mode = STATICALLY_LINKED
   installed_from =

   extension_name = aws
           loaded = false
        installed = true
     install_path = /home/kmkm/.duckdb/extensions/v1.4.2/linux_amd64/aws.duckdb_extension
      description = Provides features that depend on the AWS SDK
          aliases = []
extension_version = 55bf362
     install_mode = REPOSITORY
   installed_from = core
D .mode duckbox

その他の表示方法は Output Formats を参照

.open ではなく ATTACH statment

.open でデータベースファイルを開くと、current session のデータベースは自動で close されてしまう。両方使う場合は ATTACH 'file.db' AS file_db; と実行すれば SELECT * FROM file_db.some_table でアクセス可能。

sqliteファイルを開く

上記の ATTACH にて type指定すればよい。

ATTACH IF NOT EXISTS 'sqlite_file.db' AS sqlite_db (TYPE SQLITE);

databaseの種類は次で確認できる。

from duckdb_databases();
┌───────────────┬──────────────┬────────────────┬─────────┬───┬─────────┬──────────┬───────────┬─────────┐
 database_name  database_oid       path       comment     type    readonly  encrypted  cipher  
    varchar        int64         varchar      varchar     varchar  boolean    boolean   varchar 
├───────────────┼──────────────┼────────────────┼─────────┼───┼─────────┼──────────┼───────────┼─────────┤
 sqlite_db              2059  sqlite_file.db  NULL       sqlite   false     false      NULL    
 memory                  592  NULL            NULL       duckdb   false     false      NULL    
 system                    0  NULL            NULL       duckdb   false     false      NULL    
 temp                   1995  NULL            NULL       duckdb   false     false      NULL    
├───────────────┴──────────────┴────────────────┴─────────┴───┴─────────┴──────────┴───────────┴─────────┤
 4 rows                                                                            10 columns (8 shown) 
└────────────────────────────────────────────────────────────────────────────────────────────────────────┘

環境変数読めるよ

確認だけなら .sh env | grep HOME などでもよいが、 getenv(...) で利用もできる

SELECT getenv('HOME') as home;
┌────────────┐
    home    
  varchar   
├────────────┤
 /home/abcd 
└────────────┘

シークレットの確認

FROM duckdb_secrets(); で見れる。以下見やすくするため .mode line にて表示

D .mode line
D FROM duckdb_secrets();
         name = secret
         type = s3
     provider = credential_chain
   persistent = false
      storage = memory
        scope = ['s3://', 's3n://', 's3a://']
secret_string = name=secret;type=s3;provider=credential_chain;serializable=true;scope=s3://,s3n://,s3a://;endpoint=s3.amazonaws.com;region=ap-northeast-1
D .mode duckbox

個別のパスについて状況を確認するには which_secret() が使える。

D SELECT * FROM which_secret('s3://bucket/path_to/file.parquet', 's3');
┌─────────┬────────────┬─────────┐
  name    persistent  storage 
 varchar   varchar    varchar 
├─────────┼────────────┼─────────┤
 secret   TEMPORARY   memory  
└─────────┴────────────┴─────────┘

以上です。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?