SQLite 6 at DB
[2ch|▼Menu]
1:NAME IS NULL
07/10/23 14:40:37 2Ih164Og
URLリンク(www.sqlite.org)

過去スレ

sqliteを語るスレ
スレリンク(db板)
SQLite 2
スレリンク(db板)
SQLite 3
スレリンク(db板)
SQLite 4
スレリンク(db板)
SQLite 5
スレリンク(db板)

2:NAME IS NULL
07/10/23 16:17:16
ツール等

【GUIツール】 TkSQLite
URLリンク(reddog.s35.xrea.com)

【ADO.NET 2.0 Provider】 System.Data.SQLite
URLリンク(sqlite.phxsoftware.com)

【ODBC】 SQLite ODBC Driver
URLリンク(www.ch-werner.de)


3:NAME IS NULL
07/10/23 23:11:53
【ネタ】
OS X ハッキング! SQLiteが広げるこれからのアプリケーション
URLリンク(journal.mycom.co.jp)

SQLite Java Wrapperのコンパイル
URLリンク(syo.cocolog-nifty.com)

SQLiteへの大量のINSERT処理が厳しい (CodeZine編集部ブログ):
URLリンク(blog.codezine.jp)

SQLite性能評価その1
URLリンク(www.sutosoft.com)

Fulltext index on SQLite
URLリンク(www.dodgson.org)

SQLite の全文検索を Python から使ってみる (1)
URLリンク(plaza.rakuten.co.jp)

SQLite Full Text Search with MeCab
URLリンク(reddog.s35.xrea.com)

4:NAME IS NULL
07/10/25 23:16:53

なんか前スレいつの間にかなくなってた

しかし、語ることがないDBMSてのは安定してて優れている証かね。
退屈だねぇ
たまにはサーバーとかが爆発して、ちょっと修理して頼れるところとか見せてやりたいよ!
SQLite関係ないけどな!

5:NAME IS NULL
07/10/26 15:22:46
php5徹底攻略という本の通りに、
COPY zip FROM '13tokyo.txt';
とやると、
SQL error: near "COPY": syntax error
とでるのですが、何故でしょうか?

6:NAME IS NULL
07/10/26 15:58:48
COPYという命令はSQLiteにはない

7:NAME IS NULL
07/10/26 17:11:59
2.8 以前では存在したんだけど 3.0 で撤去されたとかなんとか
URLリンク(www.sqlite.org)

PHP5 徹底攻略もって無いからあれだけど
zip っていうテーブルがあることを前提として
sqlite3 を起動して対話型シェルから

sqlite> .import 13tokyo.txt zip

とかやればいいと思うよ

8:NAME IS NULL
07/10/27 10:39:12
C++でSQLiteを使っています。

sqlite_execでSELECTしたときに呼ばれるコールバック関数内でUPDATEしたいのですが、できませんでした。
実際ドキュメントにもsqilte_execの再帰呼び出しは問題があるように書かれてました。
これを解決するには、UPDATEするための情報を一旦保持しておいて、後から実行するしかないのでしょうか?
メモリ使用量が気になるので、別な手段があったら教えていただけると嬉しいです。

9:NAME IS NULL
07/10/27 10:43:59
メモリ使用量が気になるほどのデータをドカっとSELECTしてドカっとUPDATEするのか
それを通常の運用でやる必要があるのならテーブル設計が間違ってる気がする

10:NAME IS NULL
07/10/27 11:03:10
>>9
レスありがとうございます。
テーブル設計ですか…見直してみます。

11:NAME IS NULL
07/10/27 11:14:22
実はSQL一発でできる処理だったりとか

12:8
07/10/27 11:55:24
>>11
どうなんでしょう…
今やろうとしていることを簡単化すると、
id, name, strカラムを持つテーブルに対して、
nameとstrが特定の条件を満たすとき(文字列処理をした上で判定)に、
UPDATEでstrを書き換えるという処理です。

13:NAME IS NULL
07/10/27 12:07:40
使ったことないけどユーザ定義関数というのはそういう為にあるんではなかろうか。

14:NAME IS NULL
07/10/27 15:01:56
もう1回sqlite_open()すればできないことはない

15:8
07/10/27 17:46:20
>>13
sqlite_create_function を使ってユーザ定義関数COND, CHANGEを定義して、
UPDATE table SET str=CHANGE(str) WHERE COND(str)=1;
とすることによって、うまくいきました。
ありがとうございます。

>>14
今度試してみます。

16:NAME IS NULL
07/10/28 19:07:03
>>8
sqlite3_exec() はパフォーマンスが悪いから、面倒でも
sqlite3_prepare_v2() と sqlite3_step() を使った方がいい。

sqlite3_exec() も結局内部で prepare と step を実行してるだけだし
コールバックなんぞに頼らずに自力で step するようにすれば
行を読みながら別の処理を行うのも簡単にできる。


17:NAME IS NULL
07/10/28 19:32:10
sqlite3_prepare_v2でも、パフォーマンスはそんなに変わらんな
URLリンク(www.sutosoft.com)

18:NAME IS NULL
07/10/29 14:18:47
sqliteで標準偏差を計算するにはどのようにしたらいいのでしょうか?

19:NAME IS NULL
07/10/29 14:59:11
どこまで自分で考えたか(調べたか)くらい書こうぜ

20:18
07/10/29 16:01:37
はい。すみませんでした。
平方根の計算をどうやるのかなーと。
専用の関数も無いみたいだし、自分で作らなくちゃなんですよね?
2乗してxになる数を求める方法が知りたいです。
出来ればsqlだけで計算したいのです。
(個々の値 - 平均点)^2 の総和 / 総数
までは求めました。

table test
num value
1   723
2   743
3   234
4   532
5   789
6   334
7   124
8   888

select sum(a*a) / (select max(num) from test)
from
 (select value - ( select round(avg(value),3) from test) a
 from test)

21:NAME IS NULL
07/10/29 17:24:59
2乗が計算できるのであれば、-(1/2)乗すれば平方根が出るんじゃね?

やったこと無いのでハズしてるかもしれないが。


22:NAME IS NULL
07/10/29 17:37:44
すまん、-(1/2)乗ではなく、(1/2)乗だった。


23:NAME IS NULL
07/10/29 18:30:18
組み込みでは冪乗演算子も無いよね。

ちょっとぐぐってみたところ、 extension-functions.c なるモノがある模様。

Contributed Files
URLリンク(www.sqlite.org)

24:NAME IS NULL
07/10/29 21:25:01
何が何でもすべてSQLでやらなかきゃいかんもんなの?
分散求めといて、ホストプログラムで平方根取れば良いのでは?

25:NAME IS NULL
07/10/30 12:53:02
CodeZine:SQLiteを操作できるFirefox拡張機能「SQLite Manager 0.2.4」リリース(アドオン, DB)
URLリンク(codezine.jp)

26:NAME IS NULL
07/10/30 15:09:57
そのうちjavascriptだけでsqliteを操作出来るようになって、
完全にサーバー不要のウェブアプリケーションが出来るかもしれないな。


27:NAME IS NULL
07/10/30 15:24:37
サーバなしって…
データをローカルに置いたらウェブアプリケーションのメリットねーだろ‥

28:NAME IS NULL
07/10/30 16:09:15
>>27
プログラム配布が無いのは良いな


29:NAME IS NULL
07/10/30 16:11:44
ウェブアプリケーションというより、ブラウザアプリケーションって感じだね。
これならCD-ROMに入れて配布とか出来るし

30:NAME IS NULL
07/10/30 17:44:20
つ[Google Gears]

31:NAME IS NULL
07/10/30 22:26:41
sqliteとmysqlだけで運用してるけど、なんかsqliteだけでいいような気がしてきた。
二つをわける意味ってあるのかね?

32:NAME IS NULL
07/10/30 23:02:56
さあ。エスパーじゃないもんで。

33:NAME IS NULL
07/10/30 23:27:20
エスパーだけど、いいんじゃないかな。

34:NAME IS NULL
07/10/30 23:58:41
エスパーが言うなら間違いないな

35:NAME IS NULL
07/10/31 00:17:57
さては伊藤だな

36:NAME IS NULL
07/10/31 00:23:12
ぱわーろっく、つでぃ!

37:NAME IS NULL
07/10/31 00:47:09
>>31
マジレスすると、そんな疑問を持つくらいなら意味ないだろうな

38:NAME IS NULL
07/10/31 06:57:53
>>36
嵐の中ボンジョビとヘリに同乗して来い

39:NAME IS NULL
07/10/31 09:38:11
政則表現サポートまだー?

40:NAME IS NULL
07/11/01 00:12:08
まさのりって誰だよw

41:NAME IS NULL
07/11/01 00:19:59
呼んだ?

42:NAME IS NULL
07/11/07 17:03:15
リリースきた

2007 Nov 05 (3.5.2)
* Dropped support for the SQLITE_OMIT_MEMORY_ALLOCATION compile-time option.
* Always open files using FILE_FLAG_RANDOM_ACCESS under windows.
* The 3rd parameter of the built-in SUBSTR() function is now optional.
* Bug fix: do not invoke the authorizer when reparsing the schema after a schema change.
* Added the experimental malloc-free memory allocator in mem3.c.
* Virtual machine stores 64-bit integer and floating point constants in binary instead of text for a performance boost.
* Fix a race condition in test_async.c.
* Added the ".timer" command to the CLI

43:NAME IS NULL
07/11/08 14:51:02
Dropped support for〜
↑どういう意味?

44:NAME IS NULL
07/11/08 15:03:13
無くしたってことじゃん?

45:NAME IS NULL
07/11/11 23:00:33 2YsJoDVT
インクリメントの最新の値を得る方法って知らない?

MySQLのLAST_INSERT_IDみたいなやつ。

46:NAME IS NULL
07/11/11 23:08:19
sqlite3_last_insert_rowid()かな?

47:NAME IS NULL
07/11/12 14:30:33
テーブルの列を削除する方法ってないでしょうか?

alter table テーブル名 drop column 列名

としても出来ませんでした

48:NAME IS NULL
07/11/12 15:02:22
>>47
URLリンク(www.sqlite.org)

49:45
07/11/12 20:55:21 6IOGFgpn
>>46
トンクス
select last_insert_rowid();
で行けた。

50:NAME IS NULL
07/11/13 13:35:28
Androidに載るのが確定したね。

51:WdUyLgrrXIRwiSMg
07/11/13 14:42:19
hVSJwN <a href="URLリンク(padikzvudjco.com) [url=URLリンク(xgqhogakudkn.com) [link=URLリンク(syimejtdnxhn.com) URLリンク(usveqseywzan.com)

52:NAME IS NULL
07/11/13 15:49:05
〜ロイドと聞いただけで俺の頭の中に「とかちつくちて」が流れた!

53:NAME IS NULL
07/11/13 15:54:53
俺の頭にはR2D2がハイテンションで何かを語りかけてかけてきたお。

54:NAME IS NULL
07/11/13 21:12:48
アンドロイドってなんでつか。人工知能でつか

55:NAME IS NULL
07/11/13 21:26:18
サムスは出てこないものか

56:NAME IS NULL
07/11/13 22:54:39
>>54
Wikipedia項目リンク

57:NAME IS NULL
07/11/14 16:41:24
Bento
URLリンク(www.filemaker.co.jp)
DBエンジンはSQLite
Mac の Address Book や iCal のデータをそのまま利用できてリレーションも設定できるみたい。

58:NAME IS NULL
07/11/14 18:43:05
弁当

59:NAME IS NULL
07/11/14 18:58:15
>>58
そう。弁当。
なんでもつっこめる10年前のOpen DocのBENTO(弁当)フォーマットを今風にしたアプリケーション。

60:NAME IS NULL
07/11/14 19:01:51
ギガナツカシス

61:NAME IS NULL
07/11/14 19:06:58
おれけっこう長いことCyberdog使ってたわw

62:NAME IS NULL
07/11/17 21:08:10 N1iehPDr
まんぱん商事社長だ

63:NAME IS NULL
07/11/17 21:09:18
ゴバクった。スマン。

64:NAME IS NULL
07/11/27 07:09:30 2e8MM+HH
インサートした行のキーを取得する関数とかありましたっけ。

65:NAME IS NULL
07/11/27 07:19:21
>>49あたりの話がそうではないの?

66:NAME IS NULL
07/11/29 17:59:23
どっかにVS2005+ADO.NET2.0ProviderをつかったGUIアプリのサンプル転がってないですか?


67:NAME IS NULL
07/11/30 13:04:38
SharpDevelopでBoo使ったやつならあるよ。

68:NAME IS NULL
07/11/30 23:03:22
突然ですが、SQLiteは何と発音すればいいのでしょうか??

69:NAME IS NULL
07/11/30 23:07:01
スクライト
ストライクでも通じる

70:NAME IS NULL
07/11/30 23:40:16
漏れはえすきゅーぇらいと

71:NAME IS NULL
07/12/01 00:09:38
スプライトでも通じる

72:NAME IS NULL
07/12/01 01:22:00
前スレより。

348 名前:NAME IS NULL[sage] 投稿日:2007/06/04(月) 09:47:11 ID:???
前スレ 734 です。参考になれば。

> From: [734] NAME IS NULL <sage>
> Date: 2007/02/21(水) 11:09:08 ID:???
> 「えすきゅーらいと」か「えすきゅーえ (る) らいと」くらいかなあ?
>
> URLリンク(video.google.com)
> URLリンク(www.mail-archive.com)

349 名前:NAME IS NULL[sage] 投稿日:2007/06/04(月) 12:08:49 ID:???
新めのスレッドあった。
URLリンク(www.mail-archive.com)

読み方もPublic Domainでいいんじゃね? ってのに同意。


73:NAME IS NULL
07/12/01 01:23:32
PostgreSQLとおなじキモさを感じる。

74:NAME IS NULL
07/12/01 01:25:03
結論は通じればいい。

75:NAME IS NULL
07/12/01 01:38:57
スクライトで通じたことはないな

76:NAME IS NULL
07/12/01 02:22:16
スクリテも通じにくいね

77:NAME IS NULL
07/12/01 14:11:49
>>75
アルター使いがいっぱいいそうだな

78:NAME IS NULL
07/12/01 14:56:29
>>76
酢くりティポリティ思い出した

79:NAME IS NULL
07/12/02 13:59:27
tksqliteは、つーかスクライトと読みます。

80:NAME IS NULL
07/12/02 14:21:03
たかすクリニックかとおもた

81:NAME IS NULL
07/12/05 02:37:22 jVN3kHRw
ロリポップってレンタルサーバにSQLiteをうpしたんですが
PHPから読み込みしかできないんですOTZ
書き込みってどうすればいいんですかねぇ(´・ω・`)?

82:NAME IS NULL
07/12/05 03:16:33
属性を変えます

83:NAME IS NULL
07/12/05 09:25:17
ディレクトリの書き込み属性も変えた方が良いかもね。

84:NAME IS NULL
07/12/06 05:38:13
OSはMac OS Xです。
sqlite3コマンドについてなんですが、
日本語が通りません。
例えば、テーブル higebu にnameというフィールドが有ったとして、
UPDATE higebu SET name = 'メソ' WHERE number = 666;
みたいなことができません。
ただし、PHPなどからでは、nameにマサルやフーミンといった
日本語を格納することは出来ます。
何か対処法はないでしょうか?

85:NAME IS NULL
07/12/06 05:46:00
ついでににシェルスクリプト作って、
cat hoge.db
UPDATE higebu SET name = 'メソ' WHERE number = 666;
sqlite3 higebu < hoge.db
みたいなことをやれば、ちゃんと格納されます。
sqlite3コマンドに日本語が通らないんです。

86:NAME IS NULL
07/12/06 08:51:55
日本語のエンコードの問題じゃね?
シフトJISの"ソ"は、0x835c だから、下位バイトの 5c がバックスラッシュ扱いされている気がする。
DB格納データもコンソールも UTF8にしてやってみ。

87:NAME IS NULL
07/12/06 11:44:08
どれどれと思ってOSX10.4.11で試してみた。
確かにterminalからだとsqlite3のコマンドラインに日本語が入力できないね。
これ、emacsのshellバッファの中でsqlite3動かすとちゃんとお望みの動作ができてるので、
日本語入力の問題臭い。どうやって解決するかは知らん。

88:87
07/12/06 11:47:16
追試。
terminal上からだと日本語が入力できないていうか、
\nnnの形でエスケープされた文字になるけど、
それなりに動作はしてるようだ。
selectで表示すればちゃんと日本語になってる。

89:NAME IS NULL
07/12/06 13:04:12
違うフロントエンド使うか作るかすりゃいいじゃん。
sqlite3コマンドなんてサンプルプログラムみたいなもんでしょ。

90:NAME IS NULL
07/12/06 13:08:27
sqlite3コマンドに原因があるわけじゃないような

91:NAME IS NULL
07/12/06 15:35:54
明らかにsqlite3コマンドの問題

92:NAME IS NULL
07/12/06 15:42:32
それならemacsの中で実行してもダメなんじゃないの?
端末はshift-jisだけどemacsのprocess-coding-systemはeucかなんかってこと?

93:NAME IS NULL
07/12/06 15:48:31
いやだから環境にあったフロントエンドを使えってこと
そのEmacsの中はsqlite3が想定している環境なんだろ

94:NAME IS NULL
07/12/06 15:50:09
aho?

95:NAME IS NULL
07/12/06 16:03:04
マカだもの

96:NAME IS NULL
07/12/06 16:06:18
>>95
またおまえか

97:87
07/12/06 16:36:15
>>92
私が試したのはterminalもemacsもUTF8だよん。

98:NAME IS NULL
07/12/06 18:11:30
ソースがあるんだから、何が起きてるかくらい追いかけろよ

99:NAME IS NULL
07/12/06 18:15:50
Terminal ってソースあるの?

100:NAME IS NULL
07/12/06 18:51:13
馬鹿ばっかだな

101:NAME IS NULL
07/12/06 18:53:01
>>99
sqlite3のソースはあるんだから、どういうコードで渡ってきてるかくらい追えるのでは?
ターミナルがバグってるって話をしたいならスレチ&イタチ。

102:NAME IS NULL
07/12/06 19:14:59
どうでもいいけど、windowsでsqlite3.exeをコマンドプロンプトから
使うとutf-8じゃなくてshiftjisで文字が格納される。これ豆知識な。

103:NAME IS NULL
07/12/06 20:16:15
× Windowsで
○ 日本語版Windowsで


104:NAME IS NULL
07/12/06 22:39:17
ctrl+]
set codeset japanese euc


105:87
07/12/07 11:17:11
とりあえずわかったこと。
~/.editrc に edit off って書いておくと terminal 上でも sqlite3 のコマンドラインに
日本語を入力できるので、 editline ライブラリの問題らしい。
でもこうしちゃうと行の編集とかヒストリが使えなくなるのでおいしくない。



106:NAME IS NULL
07/12/08 12:06:25 FZp8Cjdm
DBファイルのサイズに上限を設ける方法を教えれ

107:NAME IS NULL
07/12/08 15:45:17
>>106
ディスクのパーティションサイズを変更。

108:NAME IS NULL
07/12/08 17:05:14
quota

109:NAME IS NULL
07/12/08 17:21:49
>>108
今それでやってるんだけど
こんな消極的な方法しかないの?

110:NAME IS NULL
07/12/08 17:49:07
そんなことまでDB任せにする時代なの?

111:NAME IS NULL
07/12/08 18:40:27
池沼の時代来る!

112:NAME IS NULL
07/12/08 19:00:37
もっと積極的に行こうよ

113:NAME IS NULL
07/12/08 20:54:51
書き換えがあったとき
変更中はfileのcopyが作られて
COMMITでrenameされるタイプだと
実際はquotaの半分のサイズまでしか伸びない?

114:NAME IS NULL
07/12/08 22:51:46
 クエリをJavascriptで行番号順に取得することを考えているのですが、

var i = 2;
res = db.Query("SELECT * FROM data WHERE ROWID = i ");

の様にすると、iという行を探しに行ってしまい失敗してしまいます。

res = db.Query("SELECT * FROM data WHERE ROWID = 2 ");

のように書くと取得できるのですが、どうしてなのでしょうか。


115:NAME IS NULL
07/12/08 22:58:30
君にはJavascriptの勉強がお勧め

116:NAME IS NULL
07/12/09 05:58:11
`i`

117:NAME IS NULL
07/12/09 06:23:37
〜(`i`)rz

118:NAME IS NULL
07/12/09 14:57:49
>>109
自分で積極的に、
ソースコードを読んで、
考えるべし。

119:NAME IS NULL
07/12/10 03:08:49
view を作るときに、 where 節があると
parameters are not allowed in views
と言われるんだけど、これって SQLite の制限?

×: create view ほげ as select * from ふが where 条件
○: create view ほげ as select * from ふが

120:NAME IS NULL
07/12/10 09:55:15
>>119
んと、うちでは再現しないんだけど、その「条件」によるのでは?

121:114
07/12/10 12:37:45
 お騒がせしました。おかげさまで解決しました。
 必要ないとは思いますが、参考までに。

for (i = 1;i < TotalRow + 1 ; i++ ) {
add = database.Query("SELECT * FROM data where rowid = '" + i + "' ;");
word = add.Current().At(0);
で、望み通りの処理ができました。

122:NAME IS NULL
07/12/10 13:24:43
>>121
そんなに親の仇のように激しくクエリを発行するのはどうなの

123:NAME IS NULL
07/12/10 19:01:20
典型的な糞プログラムだなwwwワロタw

124:NAME IS NULL
07/12/10 19:06:00
>>122
使用サイトは「仇討ち.com」ですので安心です。


125:NAME IS NULL
07/12/11 02:33:44
>>120
where id = 数字
とか、簡単な条件。色々試してみたけど、 where 節がある時点で駄目っぽいんだよな。
もちろん create table に置き換えると動くことは確認してる。
諸事情で SQLite 3.4.x なのがいけないのかな。

126:NAME IS NULL
07/12/11 09:43:45
やっぱうち (3.4.1) では再現しないなあ。
test/view.test には "parameters are not allowed in views" が出る例は
あるみたいだけど。

% sqlite3
sqlite> CREATE TABLE t1(a,b,c);
sqlite> CREATE VIEW v12 AS SELECT a FROM t1 WHERE b=?;
SQL error: parameters are not allowed in views
sqlite> CREATE VIEW v12 AS SELECT a FROM t1 WHERE b=1;
sqlite>

(↑最後の行は成功する)

127:NAME IS NULL
07/12/11 16:55:54
>>125
view作成のSQL文をパラメータありでprepareしてるんじゃね?
例えば、
sqlite3_prepare(db, "CREATE VIEW v1 AS SELECT * FROM t1 WHERE id = ?;" , -1, &s, NULL); // NG
てな感じに "〜 id = ?" とパラメータ使ってるとエラーになるよ。

でも、table作成はOKだったりする。
sqlite3_prepare(db, "CREATE TABLE v1 AS SELECT * FROM t1 WHERE id = ?;" , -1, &s, NULL); // OK
んで、後で sqlite3_bind_int(s, 1, 20); とかすると "〜 WHERE id = 20;" と解釈してくれる。

128:NAME IS NULL
07/12/11 17:04:00
>>126
どうも Python binding のバグで、 SQLite は無罪っぽい。 SQLite と >>126 さんごめん。
もうちょっと追跡してバグ報告しときます。

129:NAME IS NULL
07/12/11 23:37:22
sqlite> CREATE VIEW v12 AS SELECT a FROM t1 WHERE b=?;
SQL error: parameters are not allowed in views

これで性交する環境なんてあるの?


130:NAME IS NULL
07/12/12 01:19:46
>>127
ああそれだ。 "?" って Python binding 側で行っている単なるエスケープ処理だと思ってた。
SQLite 側の機能で、 SQL 文のコンパイル後に値を変えているのか。
Python binding のバグとか恥ずかしー。
thx.

131:NAME IS NULL
07/12/12 01:21:16
>>125 じゃないけど Python の sqlite3 で再現できた。
# this line will cause an error: "sqlite3.OperationalError: parameters are not allowed in views"
cur.execute('create view foods_view as select * from foods where id > (?)', (1,))

でもなんで >>127 みたいな挙動になるのか気になるなあ。
ドキュメントあさってみたけど見つからなかった。

132:126
07/12/12 01:58:25
>>129
ないでしょ。

133:127
07/12/12 09:18:49
>>131
cvs漁ってみたら src/build.c の version 1.324 がもろに該当してた。
2005-Jun-06 15:32 1.324 Check-in [2492] : Do not allow parameters in VIEW definitions. Ticket #1270.
URLリンク(www.sqlite.org)

134:131
07/12/12 10:13:23
>>133
おお、ありがとう。ぜんぜん調べが足らなかった。
pParse->nVar はクエリに含まれる ? の数だろうから
CREATE VIEW ... に ? が含まれていた時点でエラー発生させるっぽいね。

135:NAME IS NULL
07/12/15 13:22:51
マカって本当に馬鹿だよな。

136:NAME IS NULL
07/12/15 13:57:28
SQLite Release of 2007 Dec 14 (3.5.4)

137:NAME IS NULL
07/12/16 04:28:56
最新版落としてみたけど
tclsh: No such file or directory
error code 1
って出てmakeできない・・・なぜ?

138:NAME IS NULL
07/12/16 04:39:51
NO_TCLを#defineしてる?

139:NAME IS NULL
07/12/16 05:32:17
>>138さん
具体的にどうすればいいのでしょうか?
configureで--disable-tclやらいろいろ試してみましたがどうやっても結果がかわりません。
tclを入れなきゃだめなんでしょうか。

140:NAME IS NULL
07/12/16 09:28:36
makeなら、-DNO_TCLじゃないかな

141:NAME IS NULL
07/12/18 23:10:00
VB 2005+Jetでスタンドアロン環境用のアプリを組んでたんですが、
DBデータファイルの最大値が2GBなので、SQLiteに移行しようかな
と思ってます。

でも、最新版のSQLiteの日本語解説が見あたらずに困っています。
市販本はバージョンが古そうで… 英語は全くダメなので、どこか
良い日本語のサイトがあれば教えてください。


142:NAME IS NULL
07/12/18 23:54:04
別に最新版の解説じゃなくても取っ掛かりにはなるんじゃないの?

俺も英語ダメだけどこの手の資料なら出てくる単語は見慣れた専門用語ばっかりだし、
慣れたらそれなりには読めるよ。


143:NAME IS NULL
07/12/19 00:48:17
つーか、翻訳してもカタカナ語になるだけだからな
英語も日本語も大差ない

144:NAME IS NULL
07/12/19 01:07:21
>>141
英語が駄目なんて言ってるうちは今の階級から上がれないよ。
格差社会なんだからがんばろうぜ。

145:NAME IS NULL
07/12/19 20:56:54
>>141
YouにはSQL Serverがおにあいだ

146:NAME IS NULL
07/12/19 23:44:09
>>141
ソフトウェアの世界で、英語が全くダメな奴に「最新情報」がゲットできるとでも思ってんのか?


147:NAME IS NULL
07/12/19 23:45:09
>>145
SQL Server だって、2008 の最新情報は英語しかないよw


148:NAME IS NULL
07/12/19 23:52:48
日本語プログラミングみたいに日本語SQLを作ったらいい

選ぶ 全部 どこから?それは 出席簿 と 成績表 どれ?それは 出席簿 の 学籍番号 は 成績表 の 学籍番号
それと 成績表 の 平均 国語 に 算数 に 理科 に 社会 は大きい 80 それと 死亡フラグ はヌル

みたいなの

149:NAME IS NULL
07/12/20 00:28:58
>>148
単語だけじゃん。

成績表 の 国語 と 算数 の 平均 が 80 以上 で
出席簿 の 学籍番号 は 成績表 の 学籍番号 で
出席簿 と 成績表 から 全部 選ぶ

150:NAME IS NULL
07/12/20 01:53:33
ぴゅう太w

151:NAME IS NULL
07/12/20 02:49:26
>>141
何も最新版でなくても
SQLite が認識できるクエリー言語
URLリンク(www.net-newbie.com)
で十分だろ。

152:NAME IS NULL
07/12/20 11:33:32
>>141が何を知りたいのか良く分からん
SQLiteのクエリ文法が知りたいのか、
VBやC/C++からSQLiteを使う方法を知りたいのか?
いずれにしても、最新ドキュメントに拘る理由はない罠

153:NAME IS NULL
07/12/20 13:24:32
あそびならそれでいいな。仕事なら最新ドキュメント読まない奴はクビにするが。

154:NAME IS NULL
07/12/20 13:35:25
仕事なら英文ドキュメント読まない奴もクビにするが。

155:NAME IS NULL
07/12/20 13:35:37
まあ最新ドキュメントはたまに間違ってたりするが
ドキュメントにも枯れてる/枯れてないはあるから

156:NAME IS NULL
07/12/20 13:48:36
SQLite のドキュメント程度なら
プログラミングの知識と高卒レベルの英語力と辞書がありゃ余裕で理解できるっしょ。
英語は全くダメとか言って、読めないんじゃなくて読もうとしてないだけ。

157:NAME IS NULL
07/12/20 15:00:28
クビにするだのなんだのって勢い良く言うやつに限ってそんな権限は持ってないペーペー

158:NAME IS NULL
07/12/20 15:42:31
英語が読めない以前に日本語も読めない日本人が増殖中

159:NAME IS NULL
07/12/20 15:54:10
毎回英語の話題は盛り上がるね。それだけコンプレックス持ってる奴が多いのかな。

160:NAME IS NULL
07/12/20 16:00:46
多少古いのでも日本語で読めるのがあるなら読めばいいんだよ。
英語の最新版を理解するための予備知識にもなるだろ。
英語が得意でないならなおさら。

仕事なら遊びならなんて線引いてるやつはどっちも中途半端だよ。
仕事で仕入れたネタは遊びで役に立つし、遊びで仕入れたネタは仕事で役にたつんだよ。

161:NAME IS NULL
07/12/20 16:03:17
>>158
鋭い自己分析ですねw

162:NAME IS NULL
07/12/20 17:39:16
>>161
俺日本人じゃないし

163:NAME IS NULL
07/12/21 01:44:28
俺は生粋の日本人ニダ


164:NAME IS NULL
07/12/21 02:23:15
俺はハワイ在住のロシア人だ

165:NAME IS NULL
07/12/21 22:44:23
シュールw

166:NAME IS NULL
07/12/26 11:38:20
SQLite3でMySQLのexplain相当のものは無いのでしょうか?
自分の発行したSQLが問題ないのか確かめたいんですけど。

167:NAME IS NULL
07/12/26 15:28:36
あれexplain無かったっけ?

168:166
07/12/26 15:51:59
SQLiteのexplainは、単に検索結果表示のタイトルの表示方法の指定のようです。
MySQLのexplainは、クエリーの実行内容解析用なので意味合いが全然違うようです。

169:NAME IS NULL
07/12/26 17:19:28
>>168
??言ってる事が良く分からない
SQLiteのexplainはクエリ解析後のopcodeを表示してくれるよ
opcodeの意味は URLリンク(www.sqlite.org)
少なくとも表示方法の指定などでは無い、何がしたいの?

sqlite> explain select * from t1;
addr opcode p1 p2 p3
---- -------------- ---------- ---------- ---------------------------------
0 Goto 0 12
1 Integer 0 0
2 OpenRead 0 3
3 SetNumColumns 0 3
4 Rewind 0 10
5 Column 0 0
6 Column 0 1
7 Column 0 2
8 Callback 3 0
9 Next 0 5
10 Close 0 0
11 Halt 0 0
12 Transaction 0 0
13 VerifyCookie 0 2
14 Goto 0 1
15 Noop 0 0

170:NAME IS NULL
07/12/26 23:54:25
explain query plan
てのもある。

171:166
07/12/27 10:43:37
>>169
あ、すみません。.explainの方と勘違いしていました。

sqlite> explain select * from user;
Segmentation fault

orz...
SQLite version 3.3.3です...

172:NAME IS NULL
07/12/27 10:55:47
>>171
うちの環境では再現しないなあ。
おそらく、多くの環境では再現しないと思うので、

* 3.3.3 以降 explain に関するバグフィックスが入って無いか調べる。無ければ、
* SEGV する場合の schema の詳細や OS や SQLite のインストール手順の詳細を晒す
* デバッガ (GDB とか) でデバッグにチャレンジ

173:NAME IS NULL
07/12/27 13:12:50
>>171
「sqlite 3.3.3 explain」でググると↓が引っかかるね
>SQLite 5
>呼ぶなバカ; 70 :NAME IS NULL:2007/04/24(火) 09:02:08 ID:Ma6C8bPt: PHPにバンドルされているSQLite3(3.3.3)なんですが、
>explain select * from user where id=1; みたいなクエリーを発行すると、Segmentation faultしてしまいます。 ...
前スレの5でそういう話があったみたい。俺過去スレ読めんのでこれ以上は分からんが・・

174:NAME IS NULL
07/12/27 13:21:28
>>173
それ以降は、特にSEGVに関する話はないよ。

175:NAME IS NULL
07/12/30 18:04:46
コンパイルのエラーメッセージすら読めない香具師は、アクセス使っとけ。

176:NAME IS NULL
08/01/04 13:08:36
sqlite3 on PHP 5をサイトのアクセスログの保管庫に使っているのですが、
エラーログ見るとほぼ毎日のように、database is lockedのエラーがでているのですが、
順序だっていないアクセスが集中するケースには、sqliteはやっぱり弱いのでしょうか。

趣味でやってるサイトなので、多少の漏れは別に構わないっちゃかまわないんですが。
しっかり記録しようと思うなら別のDBに乗り換えた方が良いんでしょうか。

177:NAME IS NULL
08/01/04 13:41:25
SQLite3 は、複数プロセスから同時に更新はできない (参照はおっけー) ので、
更新の操作が頻繁に発生するケースには弱いかもね。
ロックやエラーの処理をしっかりやってればデータが飛ぶことはないとは思うけど、
パフォーマンスはあまり良くならないかも。

「アクセスログ」の保存方法を工夫するとマシになるかも知れない。
一行一行保存するのは厳しいので、定期的にバッチ処理的にまとめて保存するとか。

178:NAME IS NULL
08/01/04 15:21:51
ログに保存する専門のプロセスを立てればいくね?

179:176
08/01/04 15:59:13
>>177,178

>ロックやエラーの処理をしっかりやってればデータが飛ぶことはないとは思うけど、

う、そうですね..例外処理はエラーを記録するだけしかやってません...

>一行一行保存するのは厳しいので、定期的にバッチ処理的にまとめて保存するとか。
>ログに保存する専門のプロセスを立てればいくね?

生ログをテキストに貯めといて、正規化してDBに入れるのは後でまとめて、
てな感じでしょうか。
その方向でちょと検討してみます。ありがとですた〜

180:NAME IS NULL
08/01/04 16:13:55
いやそうじゃなくてsyslogdみたいなやつってこと。

181:176
08/01/04 17:46:56
PHP(httpd)から直接sqliteを叩かないで、専用プロセスを経由してログればおk
てことですよね><

182:NAME IS NULL
08/01/04 20:26:20
test

183:NAME IS NULL
08/01/04 20:31:59
dll版なんだけど、更新競合時のエラーが
sqlite3_stepでSQLITE_BUSY になるか
その前のsqlite3_prepare_v2 でLockedエラーになるか
ランダム感があって困る

184:NAME IS NULL
08/01/04 23:37:06
WEBで2年近く使ってるけどDBでトラブルが起きなかったのはsqliteだけ
最初は不安だったけどなんか不思議

185:NAME IS NULL
08/01/05 05:01:03
C#2008とSQLiteを使ってwinアプリを作ろうとしているのですが、
GUIツールを使うと第三者にdbファイル丸見えで困っています。
これを回避できる方法はないのでしょうか?

186:NAME IS NULL
08/01/05 09:13:56
>>185
具体的になにがどう困っててどうしたいんだ?
どんなファイルフォーマットにしても暗号化しないかぎり第三者にも
データは読めるわけなんで秘匿したいのなら暗号化するしかないと思うが…
# そもそもそのPCを使える人は第三者なのか?

187:NAME IS NULL
08/01/05 16:43:24
完全な暗号化なんて無理。
メモリの中をのぞくソフトを使われたら終了。

188:NAME IS NULL
08/01/05 17:20:05
C#からSQLite使う方法を詳しく、、、

189:NAME IS NULL
08/01/05 19:08:08
Googleで「C# SQLite」って打ち込む。以上。

190:NAME IS NULL
08/01/05 20:14:58
>>186,187
回答ありがとうございます。第三者って言い方が間違っていました。

複数ユーザで使うソフトなのですが、
GUIツールを使うとユーザAがユーザBのデータを見れてしまうので困っています。
Accessであればdb接続時(mdbを開く時)にパスワードを要求できますが、
SQLiteでは無理なのでしょうか?

C#2008なら簡単に逆コンパイルできてコードを見れてしまうので
dbへの接続パスワードがばれてしまうという点は諦めています。

191:NAME IS NULL
08/01/05 20:37:27
>>190
あー。そういうときどうすんだろ。
別々にログインして使うならDBファイルにアクセス権限をセットしちゃうとか。そのユーザだけW/R可能に。

192:NAME IS NULL
08/01/05 21:09:51
>>190
そのDBファイルをユーザーAはフルアクセス、ユーザーBはアクセス拒否に設定すればいいだけだろアホ


193:NAME IS NULL
08/01/05 21:13:26
>>177
SQLiteで複数のプロセスから更新をかけたいようなケースでは、
各プロセスが直接DBを触るのではなく、DBを管理する専用プロセスを作って
RPCか何かで各プロセスから更新コマンドを送るのが SQLite の作法。


194:NAME IS NULL
08/01/05 21:28:56
インメモリデータベースは?
とか思ったけど、データを外部ファイルに出力しなきゃいけないし、
そもそも複数ユーザじゃ使えないだよな。

他に考えられる方法は物理的に複数のファイルに分けるとか。
DB1 ユーザAのみ
DB2 ユーザBのみ
DB3 ユーザA,Bともに使える

195:NAME IS NULL
08/01/05 21:48:51
接続パスワードがばれるのを諦めてるなら結局同じことではないのか

196:NAME IS NULL
08/01/05 22:15:32
>>190
気休めレベルなら、
・DBファイルはパスワード付きZIPに圧縮して保存。拡張子は適当に変えておく。
・使うときテンポラリフォルダにSQLite3って分からない変な名前で解凍して読み書き。
・ユーザの保存操作時に接続を切ってパスワード付きZIPで圧縮。
・アプリ終了時にテンポラリは掃除。
とか。たしかWindowsのテンポラリって別ユーザから読み取り不可だったよな?


197:NAME IS NULL
08/01/05 22:44:01
>196
>Windowsのテンポラリ
デフォルトの%TMP%,、%TEMP%はそーらしい。
自分以外にもAdministratorsとSYSTEMにはフルコントロール付いてるけど。
もっとも%TMP%なんて何処指してるか分からんから、
%USERPROFILE%\Local Settings\Tempを直で指定するほーが良いかも


198:190
08/01/05 22:56:49
みなさんありがとうございます。
パスワードをかけるにはひと手間かかってしまうようなので、
ユーザごとにdbファイルを分けることにしました。
もう中身見られても気にしません。

199:NAME IS NULL
08/01/05 23:14:31
VistaなんかはProgram Filesには簡単にアクセスできないらしいからそのほうがいいかもね。

200:NAME IS NULL
08/01/05 23:21:54
>>198
たぶんそれで正解。隠し事すると手間ばかりかかるもんね。
秘密な情報は金を湯水のように使って管理すべし。

201:NAME IS NULL
08/01/06 00:08:50
>>193
そんな手の込んだことするくらいなら最初から MySQL や Postgres 使うわな

202:NAME IS NULL
08/01/06 00:12:53
それでもちゃんとしたRDBMS使う方がよっぽど手の込んだ事だと思う。

203:NAME IS NULL
08/01/06 23:17:34
>>201
それらじゃ組み込みDBの代替にはならないし。


204:NAME IS NULL
08/01/07 03:05:05
確かにSQLiteならDBごと分けるってのも
別に荒業ってわけじゃないしいいかも
なるほど

205:NAME IS NULL
08/01/07 13:08:41
Windows向けだけになるのだろうが、SqlServerCompactEditionがターゲットかぶるんだろうが試してみた人おる?
開発環境、データベースのスケールアップ(Express,普通のSqlServer)に対してはSqlServerのほうがよさげだけど、パフォーマンスなどどないなものかと。
まだ余裕なくて試せてないので教えてエロイ人

206:NAME IS NULL
08/01/07 17:17:55
何故それをSQLiteのスレで聞くのかね。
SQLServerのスレで聞いてこいよ。

207:NAME IS NULL
08/01/07 18:44:06
組み込み向け DB 比較スレなんてあっても良いかもね。

208:NAME IS NULL
08/01/08 10:31:35 mWbQwFY3
C++でSQLiteを使っています。
以下のコードのように_resultsを使いまわすとメモリリークしますでしょうか?
もしメモリリークするならばsqlite_free_tableをその都度やれば解決しますでしょうか?
本当はstd::vector<std::string>を_resultsのかわりに渡して動作してほしいのですが、
そのような開発を試した方はいませんでしょうか?
よろしかったら誰かアドバイスください。。

---
std::string _dbname = "hogehoge";
std::string _query = "SELECT * FROM foo";
sqlite *_db;
int _result;
int _nrow, _ncol;
char **_results;
char *_errmsg;

_db = sqlite_open( _dbname.c_str(), 0, &_errmsg);

_result = sqlite_get_table( _db, _query.c_str(), &_results, &_nrow, &_ncol, &_errmsg );
// (a) _resultsを使った処理

_query = "SELECT * FROM bar"
_result = sqlite_get_table( _db, _query.c_str(), &_results, &_nrow, &_ncol, &_errmsg );
// (b) _resultsを使った処理

sqlite_close(_db);
sqlite_free_table(_results);
delete _errmsg;
---
環境は以下の通りです。
OS: Windows XP SP2
SQLite: 2.8.17
コンパイラ等: MinGW + MSYS の g++(C++)

209:NAME IS NULL
08/01/08 12:41:18
>>208
リークしないと思う理由は何?


210:NAME IS NULL
08/01/08 12:43:44
> 本当はstd::vector<std::string>を_resultsのかわりに渡して動作してほしいのですが、
> そのような開発を試した方はいませんでしょうか?

とりあえず SQLite の入門書でも読んで API 一覧でも眺めてみたら?
それで何も思いつかないようなら才能ないからプログラミングやめた方がいいよ


211:NAME IS NULL
08/01/08 13:32:29
sqlite_free_table()が何のためにあるのか解らないなら、Cを1から勉強しなおせ

212:208
08/01/08 17:41:27
>>209
SQLite内で_resultsがnullポインタをさしていない場合に、
_nrowや_ncolを見て、その値によってはfreeやreallocなどでうまく縮めてくれているのかなぁと。
そんな親切なことないですかね。

>>210
URLリンク(www.3rd-impact.net)
を読むと、いったんchar **_resultsからvector<string>にコピーすることで
安全性を保っているようですが、とてもデータが膨大なので直接vector<vector<string>>に
入れたいです。
また、**_resultsの部分に直接vector<vector<string>>を渡してもうまくいくと、
Effective STLに記述がありましたが、これは要素数が変わらない場合限定なので使えません。

213:NAME IS NULL
08/01/08 19:54:12
もし既存の実装でそういうのが見つからないのであれば、
sqlite-2.8.17/src/table.c を参考にして自作するとかかな。

214:NAME IS NULL
08/01/08 20:29:04
>>212
オープンソースなんだから sqlite_get_table() のソースなどいくらでも参照改変できるわけだが


215:NAME IS NULL
08/01/08 20:30:28
>>212
> また、**_resultsの部分に直接vector<vector<string>>を渡してもうまくいくと、
> Effective STLに記述がありましたが

本気でそう思うんなら今すぐプログラミングやめれ、頼むから


216:NAME IS NULL
08/01/09 00:47:15
ログの整合性は、ログ取り用のテーブルと、永続化のテーブルを分ければよくね?
今弄ってる業務システム(否SQLiteだが)がそんな感じで設計されている。
そもそもデータベースなんだから、タイムスタンプさえ気にしてれば多少遅延したり、ログ的に前後しても、SELECTしたときにタイムスタンプでソートすればいいだけのような気もするが。
ミドルウェアがしょぼくてバッファなしで取りこぼすのは設計的に論外だが。

217:NAME IS NULL
08/01/09 09:58:59
>>212
> SQLite内で_resultsがnullポインタをさしていない場合に、
> _nrowや_ncolを見て、その値によってはfreeやreallocなどでうまく縮めてくれているのかなぁと。
> そんな親切なことないですかね。

もしもそんな仕様だったなら、
_results を null で初期化してない >>208 のコードではえらいことが起こるような。

218:208
08/01/09 11:49:09
改変してみた人はいなさそうですね・・・。需要はありそうな気がしますが。
自分で作成してみます。ありがとうございました。

219:NAME IS NULL
08/01/09 12:21:53
208はC++には向いてない人だと思う

220:NAME IS NULL
08/01/09 14:12:12 n34+hg7O
>>218
いや、需要はないから安心してくれ。
なんで需要がないのかは、そのうち理解できると思うよ。


221:NAME IS NULL
08/01/09 14:55:06
>>212
扱うデータがとても膨大になるんであれば、
sqlite_exec を直接使う方の関数セットを使って処理した方が良いんじゃないかなあ。
sqlite_get_table はもっと小さな結果セットをカジュアルに扱うのに特化した
ユーティリティラッパー関数なんじゃないかと思う。

222:208
08/01/09 15:04:49
>>219
すみません。。C++は私もまだまだ未熟だと思ってます。

>>220
需要がない理由は教えて欲しいです。
C++ + SQLite というのがそもそも少数派ということでしょうか。
簡単さをとるならC++ではなくPHPなどを選択するし、
パフォーマンスをとるならSQLiteではなくその他のデータベースを選択するということでしょうか?

223:NAME IS NULL
08/01/09 16:06:47
>>222
ちゃうちゃう、>>221も言ってるけど膨大なデータ扱うなら sqlite_get_table は使わんのよ、普通。
だから需要無いと言ってる訳。

224:NAME IS NULL
08/01/09 16:54:24
それ以前に、vector<vector<string> > なんてデータ構造を使ってる時点で
池沼丸出しなんだが


225:NAME IS NULL
08/01/09 16:57:52
>>221
本当に膨大なデータを処理するなら、SQLite 2.8 なら
sqlite_compile と sqlite_step、3.0 以降なら
sqlite3_prepare_v2 と sqlite3_step を使うべきだし


226:221
08/01/09 17:59:33
>>225
うぅ、これは失礼、仰る通り。
漏れもそうしていたんだけど、最近 C API 使ってなかったので忘れていた・・・

227:208
08/01/09 19:27:40
>>221
>>223
>>225
なるほどー。
やろうとしていることは、700万件ぐらいあるデータのなかから条件にあう
5万件全部をGUIのTable(Excelみたいな状態)で表示したいです。
さらに、その5万件を全部plotした散布図を作成するため、不本意ながら
vector<vector<string> >にいったん格納して、それをGUIのTableに渡しています。
もっとよい方法がありそうでしょうか?
sqlite_compile と sqlite_stepですと、一気に全部表示するのが厳しくなってしまいそうで。。

228:NAME IS NULL
08/01/09 19:33:30
>>227
おれならCでユーティリティを2本作って本体アプリから呼ぶなぁ。
・元DBから5万件拾ってテンポラリDBファイルに出力するEXE。
・テンポラリDBファイルを読んで作図、画像ファイルに落とすEXE。
こうしとけば汎用もあっていろいろ使えそうじゃん。

229:NAME IS NULL
08/01/09 19:51:41
>>227
sqlite_get_gable が5万件のデータをメモリにコピーして、
それをお前のコードが vector<vector<string> >にコピーして、
さらに GUI の Table とやらがそれをコピーして保持して
さらにそのデータを画面に表示する(ためにコピーする)
という壮大なコピーの物語に何の疑問も持たないのかね

お前の言うケースなら、sqlite_get_table で出てきたバッファを
そのまま GUI の Table とやらに渡し、そのままの形で
処理して表示するのが一番効率がいい。

vector<vector<string> >なんて介するだけメモリと CPU の無駄。


230:208
08/01/09 20:16:58
>>228
テンポラリDBファイルにいったん出力しても、結局表を作る段階で読み込まないとダメそうじゃない??

>>229
>さらに GUI の Table とやらがそれをコピーして保持して
ということはないです。GUIのTableは直接データを読むので。

たしかに、表示するだけなら、
>sqlite_get_table で出てきたバッファをそのまま GUI の Table とやらに渡し、
>そのままの形で処理して表示するのが一番効率がいい。
なのですが、そのGUIのTableはsort機能が必須で、なんらかのアクションを
起こしたときに、元データ(vector<vector<string> >)をsortしたいんですよ。

ですので、コピーはやめてvector<vector<string> >に直接代入できたらな、と。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5392日前に更新/204 KB
担当:undef