0101NAME IS NULL2013/01/07(月) 09:17:58.44ID:6FlDIcs/ 10万個もテーブル作れるならもう1データ1テーブルとかでもいいかと思ってしまうわ。 実際にはやんないけどSQLiteで扱う程度のデータならそこまで大規模になるなら別のDB使うだろうし。
それにしても暗号化ないのがちょっと不安になるわ。 案件にもよるんだろうけどみんな暗号化とかそういうの気にせず使ってるの? 0102NAME IS NULL2013/01/07(月) 16:13:46.18ID:??? 他で暗号化してから格納したら? 0103NAME IS NULL2013/01/07(月) 16:58:50.08ID:??? 案件によるって書いてあるじゃんw 0104NAME IS NULL2013/01/07(月) 18:30:21.13ID:??? 気にせずと言うか、SQLiteを使う案件で、かつ暗号化が必要というのに今のところ出くわしたことが無い。 もしそういうのが来たら自前で暗号化して積むか、本家の暗号化オプション買うかの2択かなあ。 0105NAME IS NULL2013/01/07(月) 22:41:13.14ID:??? 自前で暗号化とかすると検索が面倒になる気がしないでもないけどSQLiteは文字通りLiteなんだからしょうがないか 0106NAME IS NULL2013/01/07(月) 23:02:36.88ID:??? と言うか先にデータを暗号化してからinsertするじゃ意味無いよね? >>104はSEEを買うか、代わりにvfsで暗号化レイヤーを実装するか、って話だと思ってた… 0107NAME IS NULL2013/01/08(火) 02:24:15.71ID:???>>105 隠したい項目(暗号)をWHERE条件で検索できたら そもそも駄目じゃない? 0108あぼーんNGNGあぼーん0109NAME IS NULL2013/01/09(水) 10:37:48.50ID:PQochI3F 質問です。
全角半角大文字小文字の英数字が入り交じった項目があって、これらを全て同一視して検索する手段はありますでしょうか。 また、ひらがな、カタカナについても、おなじく同一視して検索する手段はありますでしょうか。 0110NAME IS NULL2013/01/09(水) 18:22:22.81ID:??? 質問の意味が分からない 同一視って何? 0111NAME IS NULL2013/01/09(水) 19:22:29.52ID:??? A=A=a=aとして扱いたいんでしょう。 0112NAME IS NULL2013/01/09(水) 21:05:14.98ID:??? select文を全角で入れたいのかもしれん。 0113NAME IS NULL2013/01/09(水) 21:13:02.83ID:??? 検索対象の文字列がカラム A に入っているとする。
まずカラム A の文字列の英小文字を英大文字に変換する。 上記で変換したデータの中の、半角英数記号カタカナを全角に変換する。 上記で変換したデータのカタカナを平仮名に変換する。 ここまで変換したら、検索専用カラム AA に格納しておく。
※必要であれば、ギリシア文字やロシア文字の小文字大文字変換も。
検索にあたっては、キーワードを上記ルールで変換してから、カラム AA に対して where 条件を使う。 0114NAME IS NULL2013/01/10(木) 09:16:20.51ID:???>>109 オリジナルデータを入れとくカラム以外に英数を半角大文字とかに正規化して入れとくカラムを作って検索時はそれでやれば? 0115NAME IS NULL2013/01/10(木) 12:23:53.94ID:??? やったことないけど、sqlite3_create_collation() 使って 比較関数登録して COLLATE 句ないし演算子使うってのは? 0116NAME IS NULL2013/01/11(金) 10:25:12.80ID:??? WHERE UPPER('ABCdefgHIJKlmn') = 'ABCDEFGHIJKLMN' 0117NAME IS NULL2013/01/11(金) 23:26:07.46ID:??? 3.7.15.2 0118NAME IS NULL2013/01/14(月) 06:23:33.49ID:??? sqlite って zerofill できます? 0119NAME IS NULL2013/01/14(月) 23:31:22.64ID:??? なんで自分で試さないの? 0120NAME IS NULL2013/01/16(水) 07:12:21.08ID:??? Oracle の LPAD や RPAD 関数みたいな機能のこと? 0121NAME IS NULL2013/01/21(月) 04:30:51.79ID:??? さすがにSQLiteにquery_cache_sizeみたいなのはない? 0122NAME IS NULL2013/01/21(月) 21:05:39.97ID:??? さすがにドキュメントは読んだんだよね? 0123NAME IS NULL2013/01/22(火) 17:15:38.35ID:??? unionは500回までって制限があるんですね unionで片っ端からつなげようという根性も正しくないんだろうけれど、 select結果は一回一回作業用のテーブルに全部突っ込むのがいいのかな 0124NAME IS NULL2013/01/22(火) 19:06:50.56ID:???>>123 >unionで片っ端からつなげようという根性も正しくないんだろうけれど、 その通り。設計が悪すぎるので見直すべき。 0125NAME IS NULL2013/01/23(水) 11:34:06.01ID:??? 500って何か間違ってるw 0126NAME IS NULL2013/01/23(水) 23:56:33.00ID:??? 最新バージョンをCygwinでC++から利用しているんですが CSVファイルから1行ずつよみこんで PreparedStatementを使用してINSERTする処理なんですが いくつかの行で最終カラムに入れた値だけ文字化けする現象が発生しています。 bindする際の値をデバッグして確認したのですが、その際は特に文字化け等も しておらず(改行コード等の余計なコードも入っていませんでした) INSERTをすると文字化けしています。
AndroidでSQL打つ需要ってあまりないのかな 0135NAME IS NULL2013/02/05(火) 22:33:19.13ID:??? まあ、ないよね。 0136NAME IS NULL2013/02/15(金) 20:56:17.34ID:??? A5:SQL Mk-2 という開発ツールを使い始めたばかりなんですが、 起動すると何の設定をしなくても「ODBC/SQLite3 Database」というのが表示されます。
これは単に表示されるだけのものなんでしょうか? それとも、設定やフォルダの設置でほかのSQLのように扱えるようになるんでしょうか? 0137NAME IS NULL2013/02/17(日) 22:23:46.58ID:??? そのA5:SQL Mk-2とかいう開発ツールの作者に聞けば…? 0138NAME IS NULL2013/02/18(月) 12:27:35.69ID:??? コントロールパネルか管理ツールでデータソース(ODBC)というのが あるからそれで作ってやれば一応使えるよ。 ODBCの範囲内だけどな 0139NAME IS NULL2013/02/24(日) 20:28:36.90ID:zXyOLTMR 最近興味があってsqliteを調べてるんですが、 みんなはやはりスマホのアプリ開発の為に利用してるんですか? ざっと調べたところだと、複数のユーザからの頻繁な更新を受けるようなwebアプリの利用は厳しいという 情報を見つけたんだけど、古い情報なのでいまはどうなってるのかわかりません
やっぱりそういう用途では利用しづらいんでしょうか それともなにか解決策が見つかったりしたんでしょうか 0140NAME IS NULL2013/02/24(日) 21:36:06.19ID:??? 今はジャーナルモードかえれば結構余裕 0141NAME IS NULL2013/02/27(水) 13:05:20.84ID:??? sqlite3ってMySQLみたいに
use データベース名
ってできないの? 代替コマンドある? 0142NAME IS NULL2013/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 NULL2013/03/02(土) 13:28:15.59ID:??? globとlikeってどう使い分けるんでしょうか? globの方が高機能だが速度はシンプルなlikeに劣るって認識であってますか? 0144NAME IS NULL2013/03/03(日) 11:46:23.39ID:??? LIKEは標準、GLOBはSQLite拡張、でいいんじゃね 0145NAME IS NULL2013/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 NULL2013/03/03(日) 19:17:53.28ID:??? last_insert_rowid() とか使えばいんでね? 0147NAME IS NULL2013/03/03(日) 22:36:59.89ID:??? 補足すると、トランザクションありの状態で、だよね 0148NAME IS NULL2013/03/12(火) 10:01:39.94ID:??? PHPでPDOで使ってるんですが、トランザクションを開始してコミットする前に webページを遷移させたからかどうかはわかりませんが、データベースがロックしたままになってしまいました。
SQL質疑応答スレ 13問目 http://toro.2ch.net/test/read.cgi/db/1343899481/0170NAME IS NULL2013/06/05(水) 19:50:35.27ID:???>>169 有難う 0171NAME IS NULL2013/06/08(土) 10:15:26.55ID:??? トランザクションの end と comitt の違いは何ですか? 0172NAME IS NULL2013/06/08(土) 10:48:10.84ID:???>>171 >>10173NAME IS NULL2013/06/08(土) 12:00:53.46ID:???>>172 有難う解りました 0174NAME IS NULL2013/06/08(土) 12:04:21.70ID:??? PupSQLiteで、下記がエラーになります エラーメッセージ 【cannnot start a transaction within a transaction】 ↓ ------------------------- BEGIN; UPDATE test SET [Name]="太郎" WHERE [ID]=2; END; --------------------------
2行目を UPDATEでなく SELECT文にすると正しく実行されます
何が原因でしょうか? 0175NAME IS NULL2013/06/08(土) 12:07:33.89ID:??? そのエラーメッセージに原因が書いてあるみたいだけど… 0176NAME IS NULL2013/06/08(土) 12:13:32.11ID:??? もう少し詳しく教えて頂けませんでしょうか? 100万レコードのUPDATEをするのですが、SQLiteはトランザクションで挟まないと遅いと見聞きしたので、試しに1レコードでやってみたらエラーがでました
どうすれば目的が叶えられますでしょうか? 0177NAME IS NULL2013/06/08(土) 12:26:31.81ID:???>>176 >>174 >エラーメッセージ 【cannnot start a transaction within a transaction】 > 【cannnot start a transaction within a transaction】 >cannnot start a transaction within a transaction
c a n n n o t s t a r t a t r a n s a c t i o n w i t h i n a t r a n s a c t i o n 0178NAME IS NULL2013/06/08(土) 12:34:32.16ID:??? もう少し詳しく教えて頂けませんでしょうか? どうすれば目的が叶えられますでしょうか? 0179NAME IS NULL2013/06/08(土) 12:49:41.39ID:???>>176 まずはメッセージの意味がわかるかどうか そこからだ 0180NAME IS NULL2013/06/08(土) 13:04:31.90ID:??? 意味は解ります
遅くないように明示的にトランザクションを掛けてUPDATEをするにはどうしたら良いでしょうか? 宜しくお願いします 0181NAME IS NULL2013/06/08(土) 13:29:28.78ID:???>>180 このUPDATEクエリは 既に別のトランザクションの中で動いているのだから 改めてトランザクションを作る必要はないのでは? 0182NAME IS NULL2013/06/08(土) 13:46:46.02ID:???>>181 有難うございます