ロード可能なc sqliteエクステンションの作成を "避ける"ことが合理的な方法で可能かどうかを知り、私のためにいくつかの変換を行うためにコンソールの中に。たとえば、sqliteのマニュアルには、や"random"
のようないくつかのコア関数https://www.sqlite.org/lang_corefunc.htmlのサイトがありますが、TCL/JavaScriptでクライアント側のスクリプトを作成すると便利です。例えば:sqliteのスクリプトをsqliteコンソールに追加することは可能ですか?c/C++のロード可能なエクステンションの作成のオーバーヘッドなし
# User script
proc reversedResult(result) {
return [string reverse $a]
}
select reversedResult(db.name) from users where id=1
EDIT:
次のようにデータベースをSQLiteのシェルスクリプトを使用して、CSVファイルから直接ロードされます。最後に、次いで
-- created at 2017-10-17 10:43:42.430129
-- script path /tmp/popDb/cmd1508226222.txt
CREATE TABLE 'hash_gen' (
'key' TEXT PRIMARY KEY NOT NULL,
'hash' INT NOT NULL <<<<<< HERE I WANT TO USE A HASHING FUNCTION
);
CREATE INDEX hash_gen_index ON hash_gen (hash);
CREATE TABLE 'info' (
key TEXT PRIMARY KEY NOT NULL,
value TEXT NOT NULL
);
INSERT INTO 'info' VALUES('primary_table','products');
INSERT INTO 'info' VALUES('primary_key','sku');
INSERT INTO 'info' VALUES('db_version','1.0.0');
CREATE TABLE products (
sku TEXT PRIMARY KEY NOT NULL,
...many more columns...
);
CREATE TRIGGER hash_gen_trigger
AFTER INSERT
ON 'products'
BEGIN
INSERT INTO hash_gen(key,hash) VALUES(new.sku,MY_CUSTOM_HASH_FUNCTION(new.sku,...all other fields,....));
END;
.mode csv
.import /tmp/inputCSV/1503331189113.csv products
....
<<<< MY_CUSTOM_HASH_FUNCTION(input) {return custom_hash_on_(input)...}
とdbは別のフローの一部として作成されます(別のプログラミング言語(スカラ)の別のツールで):
sqlite3 /output/path/db.db < /tmp/popDb/cmd1508226222.txt
私はTCLスクリプトを直接使用するのではなく、むしろそれらの機能を追加する方法がわからないSQLiteシェルスクリプトを使用しているので同意します。すなわちSQLの「コマンド」ファイルである。 –
あなたの最善の策はおそらくTclに 'sqlite3'シェルを実装することでしょう。 –