loadext.htmlに従うことができます:
.c
拡張機能のファイルをダウンロードする
- loadext.csv
.c
のセクション 3「読み込み可能な拡張機能のコンパイル」のコマンドを使用して、ファイルをローカルでコンパイルします (コンパイル エラーがある場合は、関連する SO の質問を確認してください)。
sqlite3_load_extension(PATH)
(.load PATH
CLIまたはSELECT load_extension(PATH)
クエリで)経由でPATH
ライブラリをロードします。.load csv
.load csv.dylib
MacOS では、次のextension-functions
ようになります。
curl --location --output extension-functions.c 'https://www.sqlite.org/contrib/download/extension-functions.c?get=25'
gcc -g -fPIC -dynamiclib extension-functions.c -o extension-functions.dylib
拡張機能のテスト:
SELECT load_extension("extension-functions");
CREATE TABLE test(x REAL);
INSERT INTO test (x) VALUES
(1),
(2),
(3),
(4),
(5);
SELECT stdev(x) FROM test;
期待される出力:1.58113883008419
また、sqlite.org の Larry Brasfield は、コンパイルされたライブラリをどこに配置して、システム全体でアクセスできるようにするかについて説明しています。
.load コマンド、sqlite3_load_extension() 呼び出し、または SQL からの load_extension() SQLite 関数に絶対パスを指定すると (拡張機能の読み込みが有効な場合)、そのパスで指定された拡張機能が読み込まれます (できます。)
絶対パスを使用せずにいずれかのロード メカニズムの拡張機能に名前を付ける場合は、dlopen(...) が実行する検索によってコンパイル済みの拡張機能を見つけることができるようにする必要があります。異なる場合がありますが、通常は、環境変数 LD_LIBRARY_PATH で指定されたディレクトリを、コロンで区切られた値が左から右へ、次に /lib と /usr/lib の順に調べます。
そのため、既に検索されている場所に拡張機能を配置するか、"env" コマンドを使用して、拡張機能を配置した場所を含む $LD_LIBRARY_PATH の値を変更して SQLite CLI を起動することができます。または、CLI を使用しているセッションの環境変数を単純に変更することもできます。(これは微妙な問題につながる可能性があるため、潜在的な影響を理解するようにしてください。)