X



トップページDB@2ch掲示板
1002コメント312KB
SQLite Part.10
■ このスレッドは過去ログ倉庫に格納されています
0071NAME IS NULL
垢版 |
2012/11/13(火) 11:25:00.29ID:???
SQLCipherってので暗号化できるみたいだけど半有料
0072NAME IS NULL
垢版 |
2012/11/13(火) 14:18:38.88ID:???
書き出しと読み出しの部分のソスを書き換えて...
なんてのは出来そう?
0073NAME IS NULL
垢版 |
2012/11/13(火) 19:05:43.34ID:???
>>70
>>1のSupportを参照。有料で別ライセンス(パブリックドメインではない)だけど本家が出してる。
0074NAME IS NULL
垢版 |
2012/11/13(火) 20:11:51.28ID:???
暗号化してインサートすればいいんじゃね?
0075NAME IS NULL
垢版 |
2012/11/14(水) 13:58:27.32ID:???
>>72 する手間かけるくらいなら >>74 の方が良いね
0076NAME IS NULL
垢版 |
2012/11/14(水) 14:22:17.72ID:???
そか IO部分はそのままという事ね。
すぐ 出来そうな感じはする。
出来ないけどorz
0077NAME IS NULL
垢版 |
2012/11/14(水) 15:01:33.23ID:???
>>74-75
暗号化してinsertしちゃったら
検索出来なくなるじゃん
0078NAME IS NULL
垢版 |
2012/11/14(水) 17:19:18.60ID:???
I/Oはそのままってだけですよ。
0079NAME IS NULL
垢版 |
2012/11/14(水) 19:33:12.83ID:???
>>77
検索キーも暗号化して検索すればいいんじゃね?
0080NAME IS NULL
垢版 |
2012/11/14(水) 19:42:07.35ID:???
部分文字列の比較とか難しくないか?
SUBSTRINGを使った場合位置が保証されるかとか。
0081NAME IS NULL
垢版 |
2012/11/16(金) 09:14:45.66ID:A4atXoQO
そりゃrotみたいな単純なもんならいいけど、暗号化とは言えないし、そもそもそれだと部分一致とかマルチバイトとか面倒だろ
0082NAME IS NULL
垢版 |
2012/11/16(金) 12:01:41.64ID:???
>>79
キーだけ暗号化した暗号文と
キーを含む文字列を暗号化した暗号文が
部分一致することは普通はあってはならない
0083NAME IS NULL
垢版 |
2012/11/16(金) 19:56:51.69ID:???
というか、一般にそれを暗号化とは言わない。
スレ違いなのでプログラム技術板あたりへどうぞ。
0084NAME IS NULL
垢版 |
2012/11/18(日) 18:11:07.08ID:???
出来ないなら普通に出来ないって言えばいいのに
0085NAME IS NULL
垢版 |
2012/11/18(日) 18:41:32.22ID:???
暗号化した文字の比較とかの話だからスレ違いってことでしょ

暗号化が出来る/出来ないの話なら>>73で出来るって結論が出てる
0087NAME IS NULL
垢版 |
2012/11/26(月) 18:23:42.86ID:???
sqliteってファイルベースのデータベースじゃん
その作成されるデータファイルのパーミッションやユーザ権限ってどうなってんの?
ユーザ毎に保存してくれる?
0088NAME IS NULL
垢版 |
2012/11/26(月) 19:29:19.32ID:???
最後の一行がよく分からないけど、実行したユーザの権限で作成されるよ。
0090NAME IS NULL
垢版 |
2012/11/27(火) 21:34:23.08ID:???
sqlite3_close_v2 よいよね
0092NAME IS NULL
垢版 |
2012/12/19(水) 16:46:02.85ID:???
SQLite3の1つのDBの中に、最大でいくつまでテーブルが作成できるのでしょうか?
0093NAME IS NULL
垢版 |
2012/12/19(水) 20:57:45.96ID:???
>>92
>>1
答えはないけどヒントは書いてある。
0095NAME IS NULL
垢版 |
2012/12/24(月) 08:40:38.60ID:???
.netなんですけど1つ目のテーブル読みながら2つめにコピーしようと
してるんですがdatabase file is lockedになります
mdbでやってた時は動いててそれをsqliteに置き換えただけなのですが
原因わかりますでしょうか
0096NAME IS NULL
垢版 |
2012/12/24(月) 13:12:05.39ID:???
エスパーじゃないので分かりません
コードとかSQL文を貼ってみてはいかがでしょうか
0097NAME IS NULL
垢版 |
2012/12/25(火) 12:26:49.38ID:???
>>93
すみません
いろいろと調べているのですが見つかりません。

レコード数やフィールド数はビルドオプションで設定ができるのですが、テーブル数の設定は見つけることもできません。
定数ではなく、環境依存の値になってしまうのでしょうか?
0098NAME IS NULL
垢版 |
2012/12/28(金) 01:40:36.64ID:???
テーブル数の上限はたぶん未定義で環境(ディスク残量など)に依存。
ソースを見ても SQLITE_MAX_TABLES みたいなそれらしき記号定数なし。

ためしに機械的な名前(T_0, T_1, .. T_99999)でテーブルを10万個作成してみたが作れた。
0099NAME IS NULL
垢版 |
2012/12/29(土) 00:55:06.02ID:???
予想だけど…。

SQLiteは作ったテーブルやインデックス、ビュー、トリガーとかのスキーマ情報を、
同じファイル内の特殊な予約テーブル"sqlite_master"に格納してる。
で、レコード数の上限は2の64乗=18446744073709551616と書いてある。
これをテーブル情報だけで全部使い切るには1800京個くらいのテーブルを作る必要があるけど、
仮に1レコード1バイトしか使わなかったとしても全部使えばsqlite_masterテーブルだけで170億GBくらい必要。
実際にはテーブル情報以外にも格納するから、もう少し減るとは思うけど、事実上無制限。

と、ここまで書いて気がついたけどsqlite_masterが埋まる前にページ数の上限の方が先に来るのかな?
アーキテクチャをちゃんと読まないで適当に書いてるけど、sqlite_masterの各行に、それぞれのデータが
格納されているページ番号(の先頭)を指定してた気がするから、ページ番号とB-Treeの先頭の対応が1:1で、
それぞれのテーブルが全部1ページ内に収まってるとすれば、ページ数の上限は2の31乗-2=2147483646だと
書いてあるから、そっちの上限に先に到達するのかもしれない。


どっちにしても通常運用で支障が出ることはないくらい沢山作れそうだけど、
嘘をいっぱい書いてるかもしれないので詳しい人いたら解説お願いします。
0101NAME IS NULL
垢版 |
2013/01/07(月) 09:17:58.44ID:6FlDIcs/
10万個もテーブル作れるならもう1データ1テーブルとかでもいいかと思ってしまうわ。
実際にはやんないけどSQLiteで扱う程度のデータならそこまで大規模になるなら別のDB使うだろうし。

それにしても暗号化ないのがちょっと不安になるわ。
案件にもよるんだろうけどみんな暗号化とかそういうの気にせず使ってるの?
0102NAME IS NULL
垢版 |
2013/01/07(月) 16:13:46.18ID:???
他で暗号化してから格納したら?
0103NAME IS NULL
垢版 |
2013/01/07(月) 16:58:50.08ID:???
案件によるって書いてあるじゃんw
0104NAME IS NULL
垢版 |
2013/01/07(月) 18:30:21.13ID:???
気にせずと言うか、SQLiteを使う案件で、かつ暗号化が必要というのに今のところ出くわしたことが無い。
もしそういうのが来たら自前で暗号化して積むか、本家の暗号化オプション買うかの2択かなあ。
0105NAME IS NULL
垢版 |
2013/01/07(月) 22:41:13.14ID:???
自前で暗号化とかすると検索が面倒になる気がしないでもないけどSQLiteは文字通りLiteなんだからしょうがないか
0106NAME IS NULL
垢版 |
2013/01/07(月) 23:02:36.88ID:???
と言うか先にデータを暗号化してからinsertするじゃ意味無いよね?
>>104はSEEを買うか、代わりにvfsで暗号化レイヤーを実装するか、って話だと思ってた…
0107NAME IS NULL
垢版 |
2013/01/08(火) 02:24:15.71ID:???
>>105
隠したい項目(暗号)をWHERE条件で検索できたら そもそも駄目じゃない?
0109NAME IS NULL
垢版 |
2013/01/09(水) 10:37:48.50ID:PQochI3F
質問です。

全角半角大文字小文字の英数字が入り交じった項目があって、これらを全て同一視して検索する手段はありますでしょうか。
また、ひらがな、カタカナについても、おなじく同一視して検索する手段はありますでしょうか。
0110NAME IS NULL
垢版 |
2013/01/09(水) 18:22:22.81ID:???
質問の意味が分からない
同一視って何?
0111NAME IS NULL
垢版 |
2013/01/09(水) 19:22:29.52ID:???
A=A=a=aとして扱いたいんでしょう。
0112NAME IS NULL
垢版 |
2013/01/09(水) 21:05:14.98ID:???
select文を全角で入れたいのかもしれん。
0113NAME IS NULL
垢版 |
2013/01/09(水) 21:13:02.83ID:???
検索対象の文字列がカラム A に入っているとする。

まずカラム A の文字列の英小文字を英大文字に変換する。
上記で変換したデータの中の、半角英数記号カタカナを全角に変換する。
上記で変換したデータのカタカナを平仮名に変換する。
ここまで変換したら、検索専用カラム AA に格納しておく。

※必要であれば、ギリシア文字やロシア文字の小文字大文字変換も。

検索にあたっては、キーワードを上記ルールで変換してから、カラム AA
に対して where 条件を使う。
0114NAME IS NULL
垢版 |
2013/01/10(木) 09:16:20.51ID:???
>>109
オリジナルデータを入れとくカラム以外に英数を半角大文字とかに正規化して入れとくカラムを作って検索時はそれでやれば?
0115NAME IS NULL
垢版 |
2013/01/10(木) 12:23:53.94ID:???
やったことないけど、sqlite3_create_collation() 使って
比較関数登録して COLLATE 句ないし演算子使うってのは?
0116NAME IS NULL
垢版 |
2013/01/11(金) 10:25:12.80ID:???
WHERE UPPER('ABCdefgHIJKlmn') = 'ABCDEFGHIJKLMN'
0118NAME IS NULL
垢版 |
2013/01/14(月) 06:23:33.49ID:???
sqlite って zerofill できます?
0119NAME IS NULL
垢版 |
2013/01/14(月) 23:31:22.64ID:???
なんで自分で試さないの?
0120NAME IS NULL
垢版 |
2013/01/16(水) 07:12:21.08ID:???
Oracle の LPAD や RPAD 関数みたいな機能のこと?
0121NAME IS NULL
垢版 |
2013/01/21(月) 04:30:51.79ID:???
さすがにSQLiteにquery_cache_sizeみたいなのはない?
0122NAME IS NULL
垢版 |
2013/01/21(月) 21:05:39.97ID:???
さすがにドキュメントは読んだんだよね?
0123NAME IS NULL
垢版 |
2013/01/22(火) 17:15:38.35ID:???
unionは500回までって制限があるんですね
unionで片っ端からつなげようという根性も正しくないんだろうけれど、
select結果は一回一回作業用のテーブルに全部突っ込むのがいいのかな
0124NAME IS NULL
垢版 |
2013/01/22(火) 19:06:50.56ID:???
>>123
>unionで片っ端からつなげようという根性も正しくないんだろうけれど、
その通り。設計が悪すぎるので見直すべき。
0125NAME IS NULL
垢版 |
2013/01/23(水) 11:34:06.01ID:???
500って何か間違ってるw
0126NAME IS NULL
垢版 |
2013/01/23(水) 23:56:33.00ID:???
最新バージョンをCygwinでC++から利用しているんですが
CSVファイルから1行ずつよみこんで
PreparedStatementを使用してINSERTする処理なんですが
いくつかの行で最終カラムに入れた値だけ文字化けする現象が発生しています。
bindする際の値をデバッグして確認したのですが、その際は特に文字化け等も
しておらず(改行コード等の余計なコードも入っていませんでした)
INSERTをすると文字化けしています。

なぜか最終カラムにだけ発生します。
TABLE作成時に最終カラムにダミーの項目を追加してINSERTを行うと
文字化けは発生しませんでした。

調べているのですが、原因が分からず困っています。
どなかかお分かりになるでしょうか?
0127NAME IS NULL
垢版 |
2013/01/24(木) 00:05:14.01ID:keellpin
そんな文章で分かるわけないだろ。ここはエスパー募集スレじゃないっす。

再現コード貼ったら誰かが答えてくれると思うよ。
0128NAME IS NULL
垢版 |
2013/02/01(金) 04:20:10.83ID:???
マルチコアCPUで使っても1コアだけ100%に張り付くだけでもったいない気がしたので
クエリを行うプログラムをマルチスレッドで走らせてみたら
複数のコアが代わる代わる100%になるだけで実行時間は全然変わらなかったと日記
0129NAME IS NULL
垢版 |
2013/02/01(金) 18:22:49.02ID:???
ここは君の日記帳ではありません
どうせプログラムの作りが悪いんだろ
0130NAME IS NULL
垢版 |
2013/02/03(日) 18:02:23.29ID:???
論文にしてどこかに投稿して
0131NAME IS NULL
垢版 |
2013/02/03(日) 20:38:35.28ID:???
リジェクトされますた
0132NAME IS NULL
垢版 |
2013/02/05(火) 16:01:47.88ID:ABxdKMYQ
おすすめのSQLitesqliteクライアントを教えてください。

PCでは
・Common SQL Environment
ttp://www.hi-ho.ne.jp/tsumiki/
を使ってるのですが、それほど高機能は求めていません。
てんぷれにないってことは、鉄板みたいなのはないのでしょうか?

目的
・SQL文の予習・復習 for Android2.3
条件
・無料
・SQLが発行できる
・結果がExcelのような表で表示される

使用中アプリの評価
・Start SQL
ttps://play.google.com/store/apps/details?id=dev.tarow.ss
○SQLの予約語KBがほしい
○公開プロバイダ(例えば電話帳)にアクセスしたい(その場合はInternetパーミッションなし)
0133NAME IS NULL
垢版 |
2013/02/05(火) 18:42:06.40ID:???
俺も前探したことあったけど、これといったのは見つからなかったな
aSQLiteManagerぐらいかな使い物になりそうだったのは
0134sage
垢版 |
2013/02/05(火) 21:43:57.72ID:ABxdKMYQ
>>133
レスありがとうございます
aSQLiteManagerも使ってみました

あれは、タブレットだと綺麗にみれるのかな?
文字が小さすぎてファイルをタップしにくいのと、
たぶん型によって色分けされた表が目に痛くて
すぐアンインストールしてしまいました

なんか、中国製のも目にとまったけど、
パーミッションみてやめたw

無料で欲しいってのがあつかましいのですが
しばらくStart SQLで我慢して
ちょくちょくgoogle playをチェックします

AndroidでSQL打つ需要ってあまりないのかな
0135NAME IS NULL
垢版 |
2013/02/05(火) 22:33:19.13ID:???
まあ、ないよね。
0136NAME IS NULL
垢版 |
2013/02/15(金) 20:56:17.34ID:???
A5:SQL Mk-2 という開発ツールを使い始めたばかりなんですが、
起動すると何の設定をしなくても「ODBC/SQLite3 Database」というのが表示されます。

これは単に表示されるだけのものなんでしょうか?
それとも、設定やフォルダの設置でほかのSQLのように扱えるようになるんでしょうか?
0137NAME IS NULL
垢版 |
2013/02/17(日) 22:23:46.58ID:???
そのA5:SQL Mk-2とかいう開発ツールの作者に聞けば…?
0138NAME IS NULL
垢版 |
2013/02/18(月) 12:27:35.69ID:???
コントロールパネルか管理ツールでデータソース(ODBC)というのが
あるからそれで作ってやれば一応使えるよ。
ODBCの範囲内だけどな
0139NAME IS NULL
垢版 |
2013/02/24(日) 20:28:36.90ID:zXyOLTMR
最近興味があってsqliteを調べてるんですが、
みんなはやはりスマホのアプリ開発の為に利用してるんですか?
ざっと調べたところだと、複数のユーザからの頻繁な更新を受けるようなwebアプリの利用は厳しいという
情報を見つけたんだけど、古い情報なのでいまはどうなってるのかわかりません

やっぱりそういう用途では利用しづらいんでしょうか
それともなにか解決策が見つかったりしたんでしょうか
0140NAME IS NULL
垢版 |
2013/02/24(日) 21:36:06.19ID:???
今はジャーナルモードかえれば結構余裕
0141NAME IS NULL
垢版 |
2013/02/27(水) 13:05:20.84ID:???
sqlite3ってMySQLみたいに

use データベース名

ってできないの?
代替コマンドある?
0142NAME IS NULL
垢版 |
2013/02/27(水) 13:43:59.53ID:???
コマンドラインの話ね?
基本的に1ファイル1DBだから必要ないっしょ?

ただ、一度に複数のDBをつなげて違うスキーマとして同時に使うっていうような
面白いことならできる

$ sqlite3 test1.db
sqlite> .databases
seq name file
--- --------------- ----------------------------------------------------------
0 main /home/hoge/test1.db

sqlite> attach 'test2.db' as 'sub';

sqlite> .databases
seq name file
--- --------------- ----------------------------------------------------------
0 main /home/hoge/test1.db
2 sub /home/hoge/test2.db


sqlite> create table main.table1 (id text primary key, val integer);
sqlite> create table sub.table1 (id text primary key, val integer);
(mainは省略可、テーブル名は被らなければ省略可)

sqlite> insert into table1 (id, val) values (0, 123);
sqlite> insert into sub.table1 (id, val) values (123, 456);

sqlite> select t2.id, t2.val from table1 t1, sub.table1 t2 where t1.val = t2.id;
123|456

見たいな。
0143NAME IS NULL
垢版 |
2013/03/02(土) 13:28:15.59ID:???
globとlikeってどう使い分けるんでしょうか?
globの方が高機能だが速度はシンプルなlikeに劣るって認識であってますか?
0144NAME IS NULL
垢版 |
2013/03/03(日) 11:46:23.39ID:???
LIKEは標準、GLOBはSQLite拡張、でいいんじゃね
0145NAME IS NULL
垢版 |
2013/03/03(日) 19:03:49.41ID:???
phpから使ってるんだけど
PRIMARY KEY AUTOINCREMENTが定義されてるindexフィールドがあるテーブルlogがあります。
そこにinsert into log DEFAULT VALUES;をした場合
その時に作られたindexの番号を取得するにはどうしたらいいの?

即order by desc limit 1しても、その時に作られたと保証はされないですし
(同じタイミングで別プロセスに作成されたのかも知れない)
0146NAME IS NULL
垢版 |
2013/03/03(日) 19:17:53.28ID:???
last_insert_rowid() とか使えばいんでね?
0147NAME IS NULL
垢版 |
2013/03/03(日) 22:36:59.89ID:???
補足すると、トランザクションありの状態で、だよね
0148NAME IS NULL
垢版 |
2013/03/12(火) 10:01:39.94ID:???
PHPでPDOで使ってるんですが、トランザクションを開始してコミットする前に
webページを遷移させたからかどうかはわかりませんが、データベースがロックしたままになってしまいました。

PHPからデータベースがロックしているか確認してロックを解除する方法はありますか?

ネットで検索しまくりましたが、
「ロックしてるファイルをコピペしたファイルをデータベースとして使えばロックは解除される」
というのしか見つかりませんでした。
0149NAME IS NULL
垢版 |
2013/03/12(火) 18:08:32.14ID:???
PDOで使ったこと無いから知らないけど、普通はロックしてるプロセスが終了すれば解放される。
ロックしたまま無限ループしてるとかじゃない限り、そのうち解放されるんじゃない?
0150148
垢版 |
2013/03/12(火) 20:44:41.05ID:???
>>149

ループ処理はしてないです。
PC再起動してもそのファイルはロックされたままですね
0151NAME IS NULL
垢版 |
2013/03/12(火) 20:46:56.95ID:???
再起動してもロックって・・・
ロックファイルでも作ってるのかしら、もしくはなんかの間違い
0152NAME IS NULL
垢版 |
2013/03/12(火) 23:52:57.99ID:???
SQLite自体にロックファイルの概念はないぞ。
そもそも「データベースがロックされたままになった」というのは何を持って判断したの?
0153148
垢版 |
2013/03/13(水) 01:43:43.60ID:???
ロックされているファイルに対してトランザクションをかけて、executeすると
ロックされてるっていうエラーが出た。

とりあえずロックされたファイルをコピペしたファイルを今使ってるので問題はなくなったけど、
またいつこんなことが起こるのか心配…
0154148
垢版 |
2013/03/13(水) 01:53:29.16ID:???
このへんかな。
http://ja.softuses.com/28862
http://ult.riise.hiroshima-u.ac.jp/~nagato/?firefox

つまり firefox が起動中 lock しているこれらの sqlite ファイルが正常に解放される事無く、 firefox が落ちてしまった時に問題が発生するのではないかと。
(中略)

database is locked となる sqlite database file であるが、別の場所にコピーすると何事もなかったのように開くことができることに気付いた。
0155NAME IS NULL
垢版 |
2013/03/13(水) 18:43:14.14ID:???
ん、PDOの話じゃないの?

・OS、アーキテクチャ
・ファイルシステム
・使用法、再現コード

ぷりーず。
0156148
垢版 |
2013/03/14(木) 12:36:23.37ID:???
リンクは単にファイルがロックされた件に関する検索の情報です。
他にほとんどなかったので。

PDOかどうかって関係あるんですか…?

OSはwindows7
アーキテクチャとは?
ファイルシステムはNTFS
使用法はPHPでPDOでトランザクションしてプリペアでupdateをセットし、execute、コミットの順です。

コードは再現できるコード作れたらそれを載せます。
0157NAME IS NULL
垢版 |
2013/03/14(木) 12:46:18.34ID:???
アーキテクチャはIA(インテル)だろ
通常は fcntl でロックしてるようだから
ロック中に落ちたらコピーして仕切りなおし、でいいけど
Windowsはどうなんかな・・・
0158NAME IS NULL
垢版 |
2013/03/14(木) 18:29:01.45ID:???
原因を切り分けるためには情報が色々必要ってことでしょ。トラブル解析の基本。

例えばPDOでしか再現できない、とかだとするとPHPのSQLite用PDOドライバのバグなんて可能性もあるからね。
windowsだったら php_pdo_sqlite.dll ってやつ。phpはこのラッパーを経由してSQLiteのAPIを叩いてるわけ。

あとは(特にLinuxの)NFSはファイルロックまわりの実装が弱い、みたいなことがあったりして、
ファイルシステムによっては同様のことがあるかもしれないからファイルシステムの情報も必要、とか。

もちろんPHPスクリプト自体の作りが悪い可能性もあるから再現コードも必要。
>トランザクションしてプリペアでupdateをセットし、execute、コミット
とやってるつもりだったが、よく見たら違うこと書いてるとかね。
0159NAME IS NULL
垢版 |
2013/03/15(金) 13:01:49.99ID:???
unlocker入れておくと、ファイルがロックされてるときに、どのプロセスがそのファイルをロックしているか教えてくれる。
ロックされたプロセスからファイルを解放することもできる。
こういうプログラムがあるから、どのプロセスがロックしているのかをプログラムから知る方法はあるのだろうけど、
俺は知らない。
0164NAME IS NULL
垢版 |
2013/05/20(月) 22:39:47.94ID:???
AccessからODBC接続したんだけど、テーブルのデータを修正できません。なぜでしょうか?
0166NAME IS NULL
垢版 |
2013/06/05(水) 18:39:43.47ID:???
累計計算するのはどうやるの?
0167NAME IS NULL
垢版 |
2013/06/05(水) 18:50:39.26ID:???
累計計算って?
窓関数使いたいとか?
それともsqlite3_total_changesのこと?
0168NAME IS NULL
垢版 |
2013/06/05(水) 19:04:13.39ID:???
>>167
どうも済みません
学習の為に、PupSQLiteで出納帳作ってみたいのですが、残高が出来なくて困ってます
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況