1 :
NAME IS NULL :
2007/04/11(水) 01:46:59 ID:gomR2ep+
まさかの2get
衝撃の3get
2getに続いて、4get!? こ、これは、三途の川の渡し賃か。
5get&ついでに前スレで俺が役にたったもののメモ load_extension sqlite3_enable_shared_cache() PRAGMA read_uncommitted=1
どう役にたったのか一口コメント頼んます。
彼女が出来ました
腰痛が治りました
のろいがとけました
SQLite入門は、クソ本だから立ち読みでOK。
立ち読みの必要すら無いだろ
もうバージョン5か MySQLに追いついたな
早くPostgreSQLにも追いつきたいですね
無理無理。 アクセスにすら負けてるし。
アクセスって・・・バージョン2007か。確かに追いつくのは大変だな。w
やっぱりバージョン2のファイルが読めないのは致命的だよな。 気づかずに読み書きさせるとファイル壊れるし。orz
ファイルが壊れるのは頭のおかしい人だけなのでへっちゃらですよ
わかった! ファイルが壊れるのと頭が壊れるのは等価なんだよ!
今までの疑問が全て解決したな!
やっぱりsqliteを業務で使ってる香具師は皆無だな。 趣味で使ってる分には問題が合ってもいいだろうし。
>>21 問題起きるのは頭のおかしい人だけなので業務で使ってもへっちゃらですよ
一体どういう業務で使ってるんだろう?
既存アプリのカスタム案件でCSVをインポートしながらとかならありえる。
Apple社にとってSpotlight開発は業務ではないのか?
データベース屋からすれば物足りないだろうが、 デスクトップアプリに組み込む分には、データ構造を 考えたりする手間がはぶけていい。そもそも、 それこそが本来の使い方。
サポート無しのsqぃてを、業務で使うなんてありえない 問題が起こってからじゃ遅いんだぜ
accessマンセー
>>27 自分が壊れていくというのはとても恐いものだよ。
昼間っからリアルな幻覚見るし。
布団に入れば枕元を大きな蜘蛛が這い回り、眠って見るのは悪夢。
彼をこんな行動に駆り立てているのは恐怖なのさ。
>>28 お前は他にもサポートの無いソフトを業務で使ったことは一切ないんだろうな?
そもそも業務というものを一切やったことないのでは?w
33 :
28 :2007/04/14(土) 02:41:41 ID:???
>>28 ベンダのサポートがあっても問題は起きないわけじゃない。
必ず解決してくれるとも限らない。
君のようなレベルだと専属のコンサルタントを雇うのが良いだろう。
サポートにかけるコストとそれにより回避しうる潜在損失を計算しない奴に業務とかいわれてもな。
サポートはあるが日本語では無理だな。確実に
SQLITEって自動的にUTF-8を使えるの? DB作るときに何か設定するの?
調べればいいじゃないか
>>37 本職のプログラマならあのくらい追い詰められるのはフツー
SQLiteってどうすればCURSOLが使えますか?
CURSOLって何?
もしかして: CURSOR
>>28 Solaris 10 ではサービス管理に SQLite を使ってるし
Symbian OS の上位版には SQLite が組み込まれてるし
東芝の輸出申請書の中に「SQLite」の文字があったりするんだが
>>28 あんたにとっては、あり得ない世の中になりつつあるな
Firefoxもsqlite使ってるね。
Sleipnir2もsqlite使ってるね。
そーいや、アクセス使ってるのって無いんじゃね。 へへっ、なんだ、蜃気楼みたいなもんだったんだな。
>>40 > 本職のプログラマならあのくらい追い詰められるのはフツー
それが普通の底辺プログラマさん。こんばんわ。
今日もこんな時間までお仕事ご苦労様です。
Janeもsqlite使ってるね。
Janeじゃねぇ
つまり配列構造を扱えないマカがsqliteを使ってるってこと?
>53 日本語でおk
配列構造とデータベースを同列に扱う馬鹿がいますねw
56 :
NAME IS NULL :2007/04/18(水) 19:48:46 ID:arYv/vQ7
こんにちは。 検索条件で日付を使いたいときというのは、 割と頻繁にがあると思うのですが、 SQLiteでは、UNIXタイムを保存して比較するのが定番でしょうか? 'yyyymmdd'の形式でも文字列比較でどうにでもなるような気もしつつ質問です。
UNIXタイムだと32bitの壁をやぶれない
64bitにすればいいじゃん
60 :
56 :2007/04/19(木) 08:55:17 ID:ed0eQyNa
ありがとうございます。 今のところ、32bitの壁(2038年問題でしたっけ?)はちょっと気になったので、 UNIXタイム(64bit)を文字列として保存しているんですが…。 SQLiteのINTEGERって32bitですよね?(処理系依存なのかな?)
>>56 SQL 的には julianday の方がメジャー。
julianday なら double で取り出して -2415018.5 すれば VT_DATE に変換できるし。
ちなみに使い方は CREATE TABLE schedule(date REAL NOT NULL, task TEXT NOT NULL); INSERT INTO schedule( date, task ) VALUES( julianday( 'now' ), 'Meeting' ); SELECT task FROM schedule WHERE date BETWEEN julianday( '2007-04-19' ) AND julianday( '2007-04-20' ); SELECT strftime( '%m-%d %H:%M', date, 'localtime' ) FROM schedule WHERE task='Meeting';
64 :
56 :2007/04/20(金) 10:32:24 ID:7QIoKb5j
>>62-63 そういえば、関数をチェックするのを忘れていました。
ありがとうございました。
>>62-63 勉強になるな。
おれなんかTEXTで'YYYYMMDD'しか使ってないもんな。
アクセス厨が来なくて寂しいな
死んだんじゃね?
呼ぶなバカ
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してしまいます。 そこでキーの使われ方について質問したいのですが、 MySQLのように、検索条件が複数になった際に、 同じ複合キーをキーとして定義していないとキーが使われないということはないですよね??
すっかり過疎ってるな。 みんなアクセスに脱北したのか?
うん。あっちで荒らしているよw
マカばっか(w
2007-Apr-25 - Version 3.3.17
>>70 検索条件が複雑な場合、どのインデックスが使われるかは
オプティマイザが決定するが、複数のインデックスが
同時に使われることはない。
オプティマイザを賢くするため、定期的に ANALYZE するのを
お勧めする。
これって1000万レコードとか管理できる?
できる
アクセスで言う所のインデックス再構築だな。
1億くらいまでならやったことある
80 :
70 :2007/04/27(金) 09:19:50 ID:W77D2/Tj
>>75 ありがとうございます。
参考にさせていただきます。
1億レコードのファイルサイズとか知りたい。 10GBのファイルをごりごり動かしてそうだが。
最高で500万くらいはあるけど一億は無いなw ありえんwwそこまでやるなら普通のDB検討するだろww 差分バックアップもできねえし、普通やらねーだろww
まずは「普通」の定義を
Liteじゃないヤツ
sendmail のログを1〜2年分解析するために
Perl + DBD::SQLite で1000万行程度突っ込んだことがある。
■環境
CPU: Pentium 4 2.4GHz
MEM: 1GB
HDD: 5400rpm 80GB
OS: Windows XP SP2
Perl: ActivePerl 5.8.8
■こんな処理をやった
1.ログの各行毎に、
・時刻、プロセスID、キューID、行全体テキストに分けてmaillogテーブルに突っ込む
・送信主と送信先のメールアドレスとmaillogテーブルの行IDをmailaddrテーブルに突っ込む
2.maillogテーブルのキューIDにインデックス作成
3.mailaddrテーブルのメールアドレスにインデックス作成
■かかった時間
1.1000万行の行追加 → 約8分
2.キューIDインデックスの作成 → 約3時間
3.メールアドレスインデックスの作成 → 約13時間
ちなみに2と3のインデックス作成はデフォルトだと無限と思えるほど遅かった。
PRAGMA cache_size = 100000;
してメモリを大量に使うようにしてやっと↑の時間で済んだ。(それでも遅いが…)
全件挿入後の DB ファイルサイズはメモってなかった。
確か 4GB くらいだったと思う。
>>83 こういうログ解析みたいな使い方するためにいちいち MySQL 鯖立てたりする意味ないだろ。
Web アプリのバックエンドだけが DB じゃないよ。
87 :
86 :2007/04/27(金) 19:41:04 ID:???
で、上記の通り SQLite はインデックス作成が妙に遅かったので、他の DBMS と比べてみた。 環境は同じで、行数は1000万じゃやってらんないので、そのうちの一部、80万行程度を材料にした。 ■SQLite 3.3.5 (DBD::SQLite 1.12) insert: 7:09 index1: 0:17 index2: 10:49 total: 18:15 ■MySQL 5.0.21 (DBD::mysql 3.0002) insert: 22:45 index1: 8:35 index2: 8:07 total: 39:27 ■PostgreSQL 8.1.3 (DBD::PgPP 0.05) insert: 83:07 index1: 1:07 index2: 1:31 total: 83:45 ・SQLite は INSERT は速いがインデックス作成が遅い。 ・MySQL は INSERT は SQLite より遅いし、インデックス作成もあまり速くない ・PostgreSQL は INSERT は遅いがインデックス作成がとても速い。 (なお、INSERT が遅いのは PP 版のモジュールを使った影響が大きそう。 もし XS 版のモジュールが使えたら他と肩を並べられた可能性あり。) index1 と index2 で偏りがあるのは、 index1 はキューIDで、値が偏りなく分散しているのに対し、 index2 はメールアドレスで、一部の値に偏って多数重複している という傾向の違いが影響してそうだ。
MySQLは、MyISAMかInnoDBかでだいぶ違うんじゃないの?
もちろんやっているだろうけど、トランザクションとかも影響するよね。
単純な検索やINSERTはよく比較されているけど、 JOINが入るときはまた大きく違うと思うんだけどなぁ 実際にありそうな設計のテーブルで ちゃんとインデックスをつけたときの比較ってのを やってほしいなぁ。誰か。
>>86 ログ解析だけならもっとなんとかできんのかww
時間かかりすぎだろwww
92 :
86 :2007/04/28(土) 01:45:34 ID:???
>>88 あーそういえば意識してなかった。
デフォルトはどっちなんだろうか
>>91 インデックス作成が異様に遅いのがね…
結局作らない方がトータルの処理は速かったな…
>>86 このとき、 SELECT の方の性能は比較してない?
1000万ログならトランザクション使えばもっと速くなるよ。 sqliteだと無理だが。アクセスすらトランザクション使えるよ。
>>94 sqliteでも普通にトランザクション使ってるが。
つーか、大量の挿入とか使わないと遅い。
アクセス厨って馬鹿ばっかだな。
じゃあsqliteのトランザクションの有無のベンチマーク示してみろよ。 無いから大して変わりないだろ。
sqliteのトランザクション有無の差はかなりある beginしなかったらinsertのたびにcimmitされるんだぜ
>>94 アクセスに1000万件は無理だろwww常識的に考えてwwww
やってみてくれwww
野良犬に餌をやるなって。
いやー、良く釣れるわw
マカって本当に馬鹿だわ(w
http://journal.mycom.co.jp/special/2004/php5/007.html さすがはMySQLといったところだが、SQLiteの16秒は
ちょっとかかりすぎだろう。どうやら大量データの連続挿入は
SQLiteの不得意な処理のようだ。
↓
お詫びと訂正
SQLiteでは明示的にトランザクションを開始しない限り、
INSERT処理の前後に必ず"BEGIN"、"COMMIT"が実行される。
後日追試を行ったところ、MySQLに対して大幅に処理時間が
かかったのはこのためであることがわかった。試しに、次のように
繰り返し処理を1つのトランザクション内に置いてみたところ、
1000件の挿入もMySQLを上回る0.221312秒で完了した。
自動コミットも知らん奴が記事を書く時代なのか
こりゃ酷い記事だ事。
3年前の情報の少ない時に書かれた記事だからな。 大目に見てやれ。
ログ1000万行追加8分ってトランザクションありの話?
110 :
86 :2007/05/02(水) 01:29:22 ID:???
>>93 してない。
仮にやったとしても、その時の用途だと
INSERT や CREATE INDEX にかかる時間と比べると
SELECT はゴミのように一瞬で終わったからほとんど比較にならなかっただろう。
>>94 一応マジレスしておくと、SQLite にもトランザクションはあるよ。
っていうかトランザクション使わないとどうしようもなく遅くなる。
>>86 のようなケースなんか100倍遅くなってもおかしくない。
今おもったんだけど86のってテーブル作ってデータを全部挿入してから インデックス作ってるけど、最初にインデックスを作ってからデータを 挿入していったとしたらどっちが早いかな。
112 :
86 :2007/05/02(水) 03:09:04 ID:???
>>111 最初そうしてみたんだけどさらに果てしなく遅かった
それはトランザクション使って果てしなく遅いのか? やっぱりアクセスの方が早いな。
>>113 というわけで、同条件でベンチマーク結果を貼ってちょ
アクセスなら5分だよ。 アクセス95のファイルも問題なく読める。
アクセス厨を相手にしちゃいけません。馬鹿ですから。
馬鹿とか、そんなレベルじゃねぇだろ。精神疾患。
アクセス厨はスレを盛り上げてるだけだろ
でもアクセスの話題がないと過疎るよね。 マカって馬鹿だし。
120 :
NAME IS NULL :2007/05/03(木) 15:38:20 ID:p1F62II5
SQLite←これなんてよむんですか?エスキューライト?
SQLiteと書いて「アクセス」と読むんだよ
122 :
NAME IS NULL :2007/05/03(木) 21:14:53 ID:p1F62II5
>>121 majimeni onegaisimasu.
124 :
NAME IS NULL :2007/05/03(木) 22:41:14 ID:p1F62II5
>>123 どうもありがとうございます。エスキューライトみたいですね。
あなたは親切なので、いいことを教えてあげます。
ちなみにSQLiteを日本語入力で変換すると、「SQLいて」になります。小文字のところでシフトキーをはなしてみてください。
もっといいことを教えろ
アクセスの方が使いやすい。
標準偏差とかの関数ってあるの?
アクセスにはあるんだけど、つかえないな
自分で作ったって10秒くらいだろ
作れません。
SQLiteでは行を集計する関数は本当に作れないよ。 これは俺も昔やろうと思って気がついた。
おいおい本当にアクセスより劣るのかよ。困るよ。しっかりしてくれよ。 もうアクセス使うことにする。
自分でプログラムを書けない人ってデータベースに全てを頼ろうとするね。 まぁそういう奴の設計したデータベースなんてどうせ使い物にならんから 俺には関係ないけど。
>>132 ソース公開されているんだから
自分で付け加えればいいじゃん?
さすがだな
なんだかよくわからんが凄い地震だ。
>>132 独自の集約関数を作れないのはAccessの方だろ?
↑アクセスに詳しそうな奴、登場
そーいや、正規表現用の追加って、どこら辺の資料見れば出来る?
久しぶりに来たが相変わらず信者とアンチの温度差が激しいスレだな。
アクセスは既に用意されている。 sqliteは無いし、作れない。 大きな違いだと思うが。 標準偏差が使えないのは業務では厳しいと思うよ。
アンチじゃないだろ。ただのキチガイ。
標準偏差を作ってみたが、 こりゃ酷い。 やっぱアクセスでいくわ
標準偏差の場合、Accessは標準でついているが、SQLiteはついていない。 SQLiteではついていなくても、自分で追加するための機能がついているため 標準偏差など、好きな集約関数を追加する事ができる。 Accessは、自分で集約関数を追加する事は出来ない。(普通の関数ならできる) ということでOK。 > 標準偏差を作ってみたが、 > こりゃ酷い。 自分で作った標準偏差機能が酷いのか?w 作れる事の証明にはなっているが。
AccessをNGワードにすればいいのか
カタカナで「アクセス」をNGワードにすればいいよ。 例のへたれは英語で書けないようだからw
やっぱりァクセスのほうが優れてるよな。
でもアクセス使ってるアプリって、全くないんだぜ。
>>150 カップラーメンを使ってるアプリも見たことないな。
カップラーメンは駄目だな。
健康にも悪そうだし。
○○を使うアプリが無いからと言って 駄目と言う事にはならんだろ! その証拠にカップラーメンを使っているアプリも無い! という馬鹿なことを言いたいとか?w 一体カップラーメンとソフトに何の関係があるんだか。 さすがアクセス厨は馬鹿だなぁ
カップラーメンという愛称(?)の健康に悪そうなDBMSがきっとあるんだよ。俺は知らんけど。
適材適所
廃材集積所
キャッチアンドリリース
もずくはもくず
LinuxやMacでAccessつかいたいんですが? やっぱりAccessは糞ですか? やめたほうがいいですか?
LinuxやMacで使うのならお勧めできる
ありがとうございます。 お勧めされた通りSQLiteを使います。 Accessは捨てました。
Jet船越
Googleが使ってるGoogsqleって何ベース? 自社開発?
糞Accessでないことは確かだw
GoogleはMySQLのパッチ出してるから、 ひょっとしたらMySQLベースかもな。
だからGoogleはクソなんだ Access使えばいいのに
>>165 google と access にどんな関係があるんだ?
ところでGoogleに対抗するために、MicrosoftとYahoo!が合併するらしいじゃないか。 是非とも新会社では素晴らしいAccessを全社的に使って頂きたいものだな。
業務システムでsqliteなんて使われてないし。 東証でもアクセスは使われているよ。マクも使われてない。
数人同時にアクセスしたら 必ず壊れるアクセスが 使われているわけ無いだろw
いや、東証システムの異常な性能の悪さを考えると、ありえないとは言えないぞ!
うまい具合に、アクセスは糞だと また一つ広められたな。 俺の計算どおりの展開だw
まぁ、こんなスレで広めなくても ACCESSの壊れやすさはDB屋なら常識だな。
このスレはアンチアクセススレと改名しました
業務システムでsqliteなんて使われてないし。 東証でもアクセスは使われているよ。マクも使われてない。
へえ
東証はアクセスやめてフォックスプロにすればいいのにね
ところでsqliteファイルを共有して、複数の蔵からアクセスするとファイルが壊れるけど仕様?
さあ再現コードのお時間です
>>181 そんな仕様ではないので運用の誤りを探すべき
その程度で壊れるのはJetDBみたいな糞くらいだろ。
ヒドい誤解をしているヤツがいるな。
>>181 また嘘ですか?
アク○スは本当にそれで壊れるけどなwww
SQLiteの辞書に出来ないとか不具合なんて言葉はありません
189 :
NAME IS NULL :2007/05/08(火) 10:43:34 ID:V80r1xg7
すんまそん。。 正規化して外部キーが沢山あるテーブルAにinsertする場合、 各情報をそれぞれの各テーブルにinsertしていき、そのidをテーブルAに外部キーとして 記録する、とゆー以外に なにか特殊なステートメントとかで、テーブルAに対するSQL一発で、全部済んじゃう なんていう虫のいい方法ってあるのでそうか。。 よろしくおながいします。m(_ _)m
WS2003上のファイルをアクセスで共有してるけど壊れないよ?
アクセスでファイルが壊れるかどうかなんて興味ありません
192 :
189 :2007/05/08(火) 13:52:42 ID:???
質問すれで聞いた方が良さそうなので、質問刷れに移動させていただきます。 スレ汚しスマソ。 アクセスが壊れやすいとは勉強になりましたw
sqlite2から3にアップデートしたらファイル壊れたのは懐かしい思いで。
超素人な質問なんですけど、100万件のデータ(40M)を SELECT * FROM tablename ORDER BY no DESC LIMIT 2 OFFSET 3 で取り出してるんですが、凄く遅いんです。 普通はこんなものなのですか?
>>194 アクセスで同じことして比較すればイイじゃん
197 :
194 :2007/05/08(火) 18:48:58 ID:???
>>195 ちょっと今は比較できる環境がないんで
>>196 PRIMARY KEYですよね?やってるんですけどね。
SELECT * FROM tablename WHERE no = 1
これなら1秒ぐらいなんですけど…。
つーか、全件フェッチしてるから遅いんだろ
199 :
194 :2007/05/08(火) 19:22:41 ID:???
手元にあったデータでSQLiteとAccessで実験したが6万件程度だったので Indexの有無に関わらずどっちも1秒弱。あんま参考にならんね。 ただAccessでLIMITとOFFSETの再現すんのめんどいな。 SELECT TOP 2 * FROM T_master WHERE (((T_master.cd1)<(SELECT MIN(cd1) FROM (SELECT TOP 3 * FROM T_master ORDER BY cd1 DESC,id)))) ORDER BY T_master.cd1 DESC,id; 純粋にTOPを返してくれるみたいだからORDER BY句にキー入れとかないと 同じ値がたくさんある場合にTOPで指定した数以上のレコード返してくる。
>>194 SELECT no FROM tablename ORDER BY no DESC LIMIT 2 OFFSET 3
でも遅いか?
202 :
200 :2007/05/08(火) 20:23:31 ID:???
ごめん200のSQL文も不正解だわ、つーか1文で済ます正解わかんね。
order by でインデックスきんかね btreeは利かないような気がしたが idxchkでインデックス働いてるか調べてみ
100万件でやったことはないけど、 そのSQLでnoがプライマリーキーなら 1秒はありえないぐらい遅いだろ。 どこか関係ないところにボトルネックが有るはず。
>>203 order byでもインデックスは効く
PCのスペック晒せって感じ。
486DX memory 8M
dbmagicでもつかってろ
アクセス95なら問題無し。
それ、現在手に入るのか?w
他のSQLみたいに WHERE date > 2007-05-01 08:10:52+09:00 と、日付フォーマットの文字列での比較を試みましたが、だめぽ。orz やるとしたらエポック秒で記録するしかないのでしょうか?
上のほうに出てた気がする
文字列なら WHERE date > '2007-05-01 08:10:52+09:00' とかそういう話じゃないよね?
ハイ。失礼しました〜。
というわけで、
>>212 の言う通り、
>>56 からの一連のレスが参考になるかと。
214 :
211 :2007/05/10(木) 13:16:05 ID:???
>>212-213 あら、、ログあったんですね。。スマソ
julianday()でINSERTやWHEREして、datetime()でSELECTする、て感じでしょか。
で、スクリプトの中は、YYYY-MM-DD HH:MM:SSで統一と。。。これで逝きマフ
Modifiersなんてのもあるんですね。BETWEENで取り出すときとか便利そう。
どもうありがとでしたー
215 :
194 :2007/05/10(木) 18:11:54 ID:???
色々やってみたんですが、全然変わりませんでした。 CREATE TABLE table_name (no INTEGER PRIMARY KEY, name VARCHAR(64), rand INTEGER); でテーブルを作って、 INSERT INTO table_name VALUES (NULL, 'value3', '{$rand}'); を100万回繰り返し、($randはランダムな数字) SELECT * FROM table_name ORDER BY no DESC LIMIT 2 OFFSET 3 で得たレコードを while ($rows = sqlite_fetch_array($result, SQLITE_ASSOC)) { // 表示処理 } で、表示するまでに20秒以上かかるんです…。 SELECT * FROM table_name WHERE no = 3 だと、瞬間的に表示されます。 スペックは PowerBook 1.5GHz、メモリ1.25GB、MAMPでやっています。 他の部分はデータベースを開く、閉じる程度しかやってないんですけど。 何か方法がおかしいんでしょうか…?
確かに SQLite2 で試すと時間かかるねえ。そういうもんだっけか?
時代は SQLite 5
未来人ktkr
219 :
NAME IS NULL :2007/05/11(金) 01:42:37 ID:m7WrnMvu
すみません。PHPをインストールしたら勝手にSQLiteが使えるようになっています。
クライアントツールのSQLiteを
http://www.sqlite.org/download.htmlからダウンロードして 使ってみたんですが、なぜSQLite(サーバー?の方)と交信できるのかわかりません。
サーバーのSQLiteはライブラリだけときいてますが、どうしてクライアントツールの方のSQLiteはサーバーと
交信できるのでしょうか?よろしくお願いします。
クラサバ純粋培養かよ
C#のSystem.Data.SQLiteの事はこのスレでいいんですかね。
100万件で、LIMIT 2 OFFSET 3は3秒で返ってきたけど LIMIT 2 OFFSET 500000 は53秒だった。 DBD-SQLite (sqlite_version=3.3.7)使用
マカってアフォだな。インテル買えば早くなるよ。ペンチアムは遅いって馬鹿にしてインテルをね(w sqliteってクライアントから接続できるの?
アフォはおまえ。インテルはいってるし。あとSQLiteはクラサバじゃなくて単なるライブラリだ。
>>222 いくらなんでもそれは何かの間違いだと思う。
そんなに遅かったらDBとして致命的。
データの取得だけじゃなくて、データ転送+HTMLのレンダリング終了まで含めた時間なんじゃねーの?
>221 前にも話題になったしいいんでないかな。 残念ながら俺は話題に乗れないけどorz 早くレガシVBから足洗いてぇ(でもどーせVB.netやらされんだきっと)
>>219 > どうしてクライアントツールの方のSQLiteはサーバーと交信できるのでしょうか?
というのが何らかの錯誤によるもの。SQLite自身にはそのような機能はない
マカって馬鹿だから今に始まったことでは無い。
231 :
219 :2007/05/12(土) 17:20:24 ID:???
なんで、だれもおしえてくれないんですか?クライアントツールのSQLiteはどうして ライブラリ単体のDBに接続できるんですか?全然、ワケがわかりません。パスが通ってるとかなら わかりますが、パスもくそもないですし。。お願いします。
>>231 ライブラリ単体で動くSQLiteにクライアントもサーバも無いから。
サーバに相当する部分までライブラリに入っていて、
アプリケーションにそっくり組み込まれてしまう。
だからSQLiteは「組込み型」と呼ばれ、
MySQLやPostgreSQLのようなクライアント/サーバ型のDBMSと区別される。
なぜ組み込み型の事例で真っ先に firefox を挙げられなかったんだろうか?
234 :
219 :2007/05/12(土) 20:09:37 ID:???
>>231 どうもありがとうございます。親切な方ですね。とりあえず、クライアントサーバーとは違うということは
よくわかりました。自分はまだ不勉強物ですので、はっきり理解はできませんが、回答してくれたことを
覚えておきたいとおもいます。
親切にありがとうございました。
235 :
NAME IS NULL :2007/05/13(日) 00:07:33 ID:Gs+BIw4T
>>234 言葉がおかしいから誰も答えたくないんだよ。
クライアントツールのSQLite ???
ライブラリ単体のDB ???
パスが通ってるとかなら分かる???
カンマ区切りのcsvファイルを読み書きするのに
サーバとかクライアントなんて意識しないだろ?
それと一緒。
要するにSQLiteにはDBMSのMS部分がごっそり抜けてるだけってことでもういいだろこのネタは
ここでアクセス厨登場 ↓
Sqliteはメモリキャッシュ機構を持たないのでHDDがすぐ壊れる
ちょっと質問 テーブルがいくつかあり、sqlite3_bind_textを使ってテーブル名を次々変更させるため int ret=sqlite3_prepare(db,"select * from ?", -1, &stmt, NULL);を実行すると このret値がSQLITE_ERRORになるんですが、select文のときはこんな風に ?を使えないんでしょうか
>>240 ?の対象がテーブル名の場合に使えないんじゃないかな。
"SELECT * FROM hoge WHERE fuga = ?"
ならSELECT文でも使える。
GUIでDB作れるアクセスが楽だわ。
>>242 GUIでしかDBを作れない低脳か。
やっぱAccess厨は馬鹿しかいないんだな。
244 :
NAME IS NULL :2007/05/13(日) 20:50:06 ID:d809YbuR
すみません。SQLiteをつかっているんですが、SQLiteの文字コードは何ですか? Unicodeみたいですが、詳しくはネットで探してもわかりませんでした。 MySQLにデータ移行しなくてはいけないんですが、それによって、MySQLでの文字コードも 決めるか、元のデータを変換しなくてはならないので・・ よろしくお願いします。
>>244 データ挿入時に使った文字コードじゃない?
246 :
244 :2007/05/13(日) 21:43:59 ID:d809YbuR
>>245 そうなんですか。ありがとうございます。じゃ、一度MySQLのほうにデータを
移してみます。
ありがとうございました。
国際化されてないsqlite。 UTF8で統一されてるMySQLとアクセスは勝ち組。
248 :
240 :2007/05/13(日) 23:15:25 ID:???
>>241 回答どうもです
いろいろやってますが、おっしゃるようにそんな感じですね
where句は使わないのでsprintfでsql文作ることにします
誘蛾灯のようなスレだなw
なんでSQLiteが目の仇にされてるのかがわからん。 殆どのSQLiteユーザーって他のDBMSも使ってるんじゃないの? SQLiteでいいならそうしてるだけで。
>>251 キチガイの考えを推測するのはやめておけ。感染するぞ。
253 :
NAME IS NULL :2007/05/14(月) 20:27:47 ID:Jn92LTQp
最初にテーブルを作ったものは、test.sqliteとテーブルのファイルがありますが、 後にbunruiテーブルをつくったのですが、ファイルもありませんし、PHPからもアクセスできません。 ちなみに、SQLiteManagerを使って作成しました。どういうことでしょうか? bunrui.sqliteファイルが作成されてないということは、ハードディスク上にテーブルが作成されていないということなんでしょうか? もしくは、php_dbというデータベース名のデータベースのファイルに作成されているのでしょうか? .sqliteファイルがないということは、テーブル作成にうまくいっていないのですか?
>>253 1ファイル1テーブルと勘違いしていないか?
255 :
253 :2007/05/14(月) 21:27:28 ID:Jn92LTQp
>>254 そうですね。1DB1ファイルですね。僕の勘違いでした。
簡単なスクリプトなのに、PHPから接続できないので、焦っていました。よくみてませんでした。
どうもありがとうございます。
256 :
NAME IS NULL :2007/05/15(火) 04:49:19 ID:ivX2cZR4
>>244 PRAGMA encoding = "UTF-8";
PRAGMA encoding = "UTF-16";
PRAGMA encoding = "UTF-16le";
PRAGMA encoding = "UTF-16be";
好きなのを使え
時代はJISだ
メールの文字化けは避けたいからな。
sqliteでupsertできる? やっぱりできないよな。 oracle最強
といいつつ
>>259 はアクセス経由でしかoracleをさわれないのであった
>>259 忠告
調べてから書くようにすると、恥をかかなくてすむよ
>>259 INSERT OR REPLACE とか?
似てるけど、厳密には違うな
なんでもいいけど、 先に目的があってそれを実現するための手段だろ。 目的不明で手段の比較しても無意味。
目的:トラウマになったソフトを誹謗中傷して魂の平穏を得る事 手段:あくせしゅとおらこーをほめたたえる
別に目的はおいといて手段の比較だけするのも意味なくはないんじゃない。
>>267 機能比較の一覧表でも作るなら意味はあるが、
個別の機能を唐突に取り出して比較するのは無意味。
ていうかキチガイの行動に意味も何もあるかよw
Oracleのupsert相当の処理をSQLiteでどう書くか説明されると何か困ることでもあるのか?
>>268 =259
replace into構文を知らんとは、 ドキュメントを読んでない証拠だな。
>>270 読んでみたけど INSERT OR REPLACE とどう違うかわからない。
同じなら消すんだろ。そして入れるんだろ 他方は同じなら書くんだろ
>>272 そうなの?
「The REPLACE command is an alias for the "INSERT OR REPLACE"」
ってあるから同じものかと思ってた。
よそでバカにされまくってるよ、このスレ
ふーん
生産性のあるレスが2割ぐらいしかないからな。
UNIX板じゃ普通
>>276 2割ってのは実は2chの平均くらいじゃないのか…?
2割もあったら良スレどころか神スレの域
結局upsertがSQLiteのINSERT OR REPLACEとの違いを説明できないのかw
ふつうmergeつかうだろ
updateをほとんど発行してない場合は、vacuumする意味ないっすよね?
>updateとdelete
まあマカはオラクルなんて使ったことないだろうしな。
sqliteって暗号化できる? 自前で入れるデータを暗号化するしかないの?w
有料版なら暗号化サポートしとるよ。 というか、オープンソースなんだから ない機能は作ればいいだけ。
有料版?
無料版使ってる貧乏人キター
マカは貧乏人。 OSもソフトもフォントも割れ。
へぇ。フォント〜。
アクセスなら有料で安心だ。
>292 余剰予算の消化に最適ですね。
つーか、オフィスプロぐらい普通に予算取れるよな。 マカってオフィスも買えないほど低予算なのか?
公務員乙
公務員ほど林檎信仰。能力低いからな。税金で買うから値段高くても気にしないし。
夕張感覚の公務員なんていくらでも居るしなあ。 税金だからって好きに使ってる。
税金好きに使えなきゃ公務員になった意味がねーだろw
税金だけならいいんだけど他人に借金させてまで自分が欲しいもの買うなよって言いたい。 すれ違いだけど
コスト削減して税率下げて、納税者の負担を減らそうと言う気がないって話。 行政も民間みたいに競争しないと努力しないから駄目だよな。
>>300 Access使わないでSQLite使えって話?
まあマカはウィンドウズがうらやましいって話だろ。
俺のマラも嫁のウィンドウズ大好きだよ
やっぱりアクセスが使えるウィンドウズが最強(w
何でアクセス厨はSqliteスレにしか出張してこないんだろう
アクセスはネタだろうて
sqlite2のDBファイルが読めないなんて、アクセスにも劣る互換性だからじゃね?
いいかげん飽きたよな。ループループ。
311 :
NAME IS NULL :2007/05/31(木) 15:18:07 ID:detEBJcT
ACCESS厨は適材適所という言葉を知らんからな。
主役よりも名脇役だよな。
つまり検索にしか使えないってことか。 select専用のデータベースですね。
> つまり kwsk
316 :
NAME IS NULL :2007/06/01(金) 11:37:13 ID:PYRR3Wei
sqlite3のデータをsqlite2にインポートすることって可能なんでしょうか? もしくは、sqlite2の管理ソフトってありますでしょうか? 3の管理ソフトはいくつか見つかったのですが・・・。 よろしくおねがいします。
1可能。 2ある。
319 :
NAME IS NULL :2007/06/01(金) 15:06:17 ID:PYRR3Wei
>>318 TkSQLiteというソフト使ってみたんですけど、
CSVやSQL文で出力はできるんですけど、sqliteデータベースファイルが作れません・・・。
アタッチとかデタッチというメニューから保存するんでしょうか?
どちらも選択するとエラーが出ちゃいます。
アタッチすると、missing close-bracket
デタッチすると、invalid command name "-detail"
とエラーになっちゃいます。
どなたかご教授お願いいたします。。
dbを別名で保存、バージョンを変えて保存はできない。 Export (SQL) ↓ New SQLite2DB ↓ Import (SQL)
「db が壊れてしまいました」という報告をてぐすね引いて待っているアクセス厨乙。
>>319 1、3のデータベースファイルを開く
2、SQLでエクスポートする
3、3のデータベースファイルを閉じる
4、2のデータベースファイルを新規作成する
5、SQLをインポートする
324 :
NAME IS NULL :2007/06/02(土) 09:17:25 ID:Xn9CYp5P
TkSQLiteってすげえな! やっぱGUIつええ 俺へっぽこすぎ
SQLiteってフルテキスト検索既についてたような
SQLite Users にも Google 社員がよく投稿してるしな。 fts に Google 社員が関わってるんでしょ。
Googleも地に落ちたなw
>>323 でもSQLiteはパブリックドメインなので、
全文検索がついたSQLiteはクローズドソースなのでした。
まあ日本語の全文検索は出来ないって罠だろう。 出来たとしても、sjis/jis/euc/utfで4回検索して実用的速度じゃない悪寒。 sqliteを4スレッドで起動してパラレルで検索するので4以上のパイプライン環境限定とかな(w
>>329 > 出来たとしても、sjis/jis/euc/utfで4回検索して実用的速度じゃない悪寒。
そういう問題じゃねーだろ。w
形態素解析とかの部分は比較的簡単に差し替えれるのかな。
であれば日本人にも良さげ。
>>329 アフォ過ぎる。ワロタ。
やっぱり日本語で検索できるアクセスは最強だ。
Access にフルテキストインデックスってあったんだっけ?
アホに触っちゃ駄目だって。 カタカナのAccessはNGワードにすればいい。
インデクス無しで検索できるのがアクセス。 sqliteとは違うのだよ。
>>336 もいろいろ大変なんだな…
でも生きていればきっといいことあるよ!
それはどうかな
Accessでいわゆる「半角カナ」限定の検索をしようとすると地獄を見る
むしろ半角仮名に弱いのはsqliteだったり。 sjisの機種依存文字を使いまくると問題でまくり。
なんで SQLite スレで sjis の話が出てくる。一体どんな使い方しとんねん。 あと、半角仮名の話と機種依存文字の話を混同しないように。
つ 携帯
普通はバッグエンドはUNICODE系を使って 表示するときにSJISに変換するものだと思っていたが?
>>339-340 どちらも使い方が悪いだけ。AccessでもSQLiteでも馬鹿が使えばボロボロなのは同じ。
マカの使い方は異常。
346 :
NAME IS NULL :2007/06/04(月) 08:44:04 ID:/50+iam1
初歩的な質問だったら申し訳ないですが、 SQLiteって、一般的には何と発音しますか? 「えすきゅーらいと」でいいんでしょうか?
347 :
NAME IS NULL :2007/06/04(月) 08:45:37 ID:MNYsmZdC
まじで。俺エスキューエル・イテって読んでた。 嘘
>>340 >sjisの機種依存文字を使いまくると問題でまくり。
これに関してはよくわからないな。どういう環境で使ってるのか知らないし
どのバージョンを使ってるのかも知らないが、たぶんSQLiteのバンディング側の
問題なのでは?
340にツっこんだら負けだと思ってたんだが
携帯の機種依存に対応してないsqliteが悪い。
ダメだ、ここは釣り師が多すぎてつい釣られそうに…
携帯の機種依存?
機種依存文字はすべて、UTFにコード割り当てされてるじゃん。
>>353 は馬鹿?
よく釣れるな
その割当が、sjis→utfとutf→sjisじゃ一致しない糞だし。orz
358 :
NAME IS NULL :2007/06/05(火) 08:28:04 ID:b61KR+VG
ところでみんなSQLite何に使ってるの?
>357 そりゃ、変換にはマップ使わなきゃ無理だろ。つーか、それはSQLiteは関係ない。
ADO.NET 2.0 Provider for SQLite の話はここで良いですか?
VS2005から INSERT すると どうも遅いので、調べたら
ttp://journal.mycom.co.jp/special/2004/php5/007.html SQLiteでは明示的にトランザクションを開始しない限り、INSERT処理の前後に必ず"BEGIN"、"COMMIT"が実行される。
とのことでした。
ADO.NET 2.0 Provider for SQLite 使ってこれを回避したいんだけど、どんな感じにコーディングしたらいいんでしょうか??
今はTableAdapterでInsertしてました。
>>361 .NETは知らんけど、明示的にトランザクション開始したらいいじゃないか。
2003なら分かるが、2005は分からんな。
>>361 ソース落としてきて test/TestCase.csの
FastInsertManyのとこ見てみれ。
どうしてもDataTable使いたいなら
その上のDataAdapter のとこ見れ。
test.exeの実行結果
...
Inserting using CommandBuilder and DataAdapter
-> (10,000 rows) ...
-> Insert Ends in 219 ms ... Commits in 156 ms
...
Fast insert using parameters and prepared statement
-> (100,000 rows) Begins ...
-> Ends in 1063 ms ... Commits in 437 ms
上がDataAdapterで下がFastInsertManyね。
>>358 Webサーバとかメールサーバとかのログの解析
未だにレガシASPからMDB叩いてるという化石のようなシステム保守してる身からは 来る64bit化の荒波への最後の砦かも
>366 mdbって複数アクセスでこわれないように作れるもんなの?
まだMSDE使った方がマシだな。
板違いだったらごめん。
いろいろ調べたんだけど、どうしても分からないので、諸先輩方
助けてプリーズ。
SQLite3をlinuxでソースからビルドしたんですが、libsqlite3.soのサイズが
1.3MB程の大きなサイズになってしまうんですよ。
SQLiteのHPトップには「less than 250KiB fully configured」と書いてあるし、
HPからダウンロードしたlinux-x86のバイナリは、397KB程度なのに。。。
自分でビルドする場合、この程度の大きさにするにはどうしたら良いか
教えてくれませんか?
ttp://www.sqlite.org/cvstrac/wiki?p=SizeOfSqlite のページも参考に、-Oxをいろいろ変えたり、同様の-Dオプションも追加したり
しましたが、大して変わらずの結果でほとほと困っています。
下に私の環境と手順を書きますので、よろしくお願いします。
【環境】
redhat 9(カーネル 2.4.20-8)
gcc バージョン 3.2.2 20030222 (Red Hat Linux 3.2.2-5)
【SQLite3のバージョン】
sqlite-3.3.17.tar.gz
sqlite-source-3_3_17.zip
【SQLite3ビルド手順】
$> ./configure --disable-tcl --enable-releasemode
$> make clean
$> make all
「ls -l ./.libs/」の結果
26 libsqlite3-3.3.17.so.0 -> libsqlite3-3.3.17.so.0.8.6
1288443 libsqlite3-3.3.17.so.0.8.6
2023180 libsqlite3.a
16 libsqlite3.la -> ../libsqlite3.la
834 libsqlite3.lai
26 libsqlite3.so -> libsqlite3-3.3.17.so.0.8.6
strip してもだめなん?
370です。
>>371 さん
ありがとう!できました。
リンクオプションに-Wl,--strip-allを加えたら小さくなりました。
26 libsqlite3-3.3.17.so.0 -> libsqlite3-3.3.17.so.0.8.6
334676 libsqlite3-3.3.17.so.0.8.6
2023180 libsqlite3.a
16 libsqlite3.la -> ../libsqlite3.la
834 libsqlite3.lai
26 libsqlite3.so -> libsqlite3-3.3.17.so.0.8.6
ほんとうにありがとう!!
374 :
NAME IS NULL :2007/06/14(木) 18:28:49 ID:1Fp9liIj
SQLite3を利用しています。 PRIMARY KEYにAUTOINCREMENTを指定していて、テーブル内の 全てのデータを削除した時にAUTOINCREMENTの値を1からカウントに 初期化したいのですが、どうすれば良いのでしょうか?
377 :
374 :2007/06/14(木) 22:41:42 ID:???
レスありがとう。テーブル作り直します。orz
>>374 UPDATE sqlite_sequence SET seq=1 WHERE name='mytabe'
379 :
374 :2007/06/15(金) 08:25:47 ID:???
レスありがとう。テーブル作り直さずに済みました。^^
rowidってupdate出来るのなw
やっぱり初心者にはアクセスが向いてるよな。
そうだね。 けど作ってるときに思うんだよ、アクセス止めときゃ良かったって。
SQLite3で、PRIMARY KEYにAUTOINCREMENTを指定した場合 索引が作られていないようですが、これって仕様ですか? もちろん、このPRIMARY KEYで検索したらフルスキャンですよね?
でもsqliteの糞ぶりに比べればマシだが。
>>383 お前は本気で言ってるのか?
INTEGER PRIMARY KEY AUTOINCREMENT に指定したカラムは
ROWID のエイリアスになるんだが。
ROWID による検索はインデックススキャンと同じ。
3.4.0!
相変わらず2.x時代のdbファイルを読ませると破壊してくれるな。orz
君の環境だけだなw
破壊してくれるって言う奴いるけど 3.xで実行して読み込めないだけじゃなくて 2.xで実行したとき読み込めなくなっているのかと。
よく知らねーけど「破壊」って言ってるんだから後者なんじゃネーノ?
387の脳内以外ではそんなこと起きないけどね
漏れ SQLite3 しか関わったこと無いんだけど、 SQLite2 も利用する機会ってどういうケースがあるの?
おまえらなんで真面目に相手してるの?バカ?
dbファイルと言ってるからバークレイDB2.xのファイルなんだろ
>>392 SQLite2のファイルは破壊されると信じてる人がSQLite2のファイルを扱うとき、じゃないかなw
いつまでたっても第三者が再現できる情報を出さない時点で説得力なんて皆無だしな
昔作ったsqlite2のファイルがあるんだよ。 最近使い始めた香具師は、sqlite3からしかデータ持ってないから幸せ回路全開だろうけど。
昔(脳内で)作ったsqlite2のファイルが(脳内に)あるんだよ。 俺の脳も回路全開なんだよ。
脳が壊れたら、そりゃ脳内のDBも壊れる罠
読ませるも糞も、3から2のファイルは元々読めない訳だが
401 :
NAME IS NULL :2007/06/18(月) 03:27:16 ID:4buWPSB1
>>386 Documentation updates in preparation for 3.4.0. By drh.
もうバージョンアップしないで枯れてほしい・・・。 ファイルの細かい互換性の違いが短期間に起きるのやめてほしい・・・。
おまえの蛆虫並みの脳には短期間だろうが、常人には普通
404 :
NAME IS NULL :2007/06/18(月) 17:44:42 ID:TAbOUre7
開発速度が速いと思う。 ファイルの細かい互換性に問題がある場合もあると思う。 むしろ、今回のバージョンアップは間があきすぎ。 今やってる部分って面白い機能が多い。 wktkして待ってるのに・・・
まあすぐに3.4.1出るから見てろよ。本当にリリース管理は適当なんだから。
Accessで直接ファイルを開けたら便利なのに。 DB鯖からのデータの出し入れしたりとかラクラク操作で使いたいんだけど。
開けるだろ
馬鹿にはODBCすら使えないんだろう。
使えネ
使い分けろやw
411 :
NAME IS NULL :2007/06/19(火) 19:33:55 ID:1cI0FWog
3.4がまだ出てないのに、3.4.1の話。
413 :
NAME IS NULL :2007/06/19(火) 19:48:55 ID:1cI0FWog
2007-Jun-18 - Version 3.4.0
415 :
NAME IS NULL :2007/06/19(火) 20:12:48 ID:1cI0FWog
ほんとだ!
マカウザい。
2007-Jun-18 - Version 3.4.0 久しぶりのアップデートだな。ちょっと様子見。
お前ら全員カスだな
やっぱりウィンドウズ使ってる方がまともだな。
421 :
NAME IS NULL :2007/06/22(金) 18:04:30 ID:4yx4LY9x
確かに、「SQLite 破壊」で検索すると結構な量の事例が出てくる。
>>421 ずいぶん変わった検索サイトを使ってるようだな
「アクセス 破壊」
そーいえば、Updateしたらガンガン破壊したって事例があったな >> あくせす
「oracle 破壊」
アクセスなら2007でも95のファイルが読めるけどな。
AccessとJetDBはゴミだけどな。
oracle 破壊 に一致する日本語のページ 約 119,000 件 access 破壊 に一致する日本語のページ 約 415,000 件 sqlite 破壊 に一致する日本語のページ 約 21,400 件 mysql 破壊 に一致する日本語のページ 約 145,000 件 PostgreSQL 破壊 に一致する日本語のページ 約 71,900 件 accessが圧勝
429 :
NAME IS NULL :2007/06/23(土) 18:33:34 ID:zO59Z1T1
>>428 中身を見れば意味が分かる。
破壊された事例と、破壊されると思ったが破壊されなかったという喜びの事例。
大きな違いがある。
残念ながらSQLiteは破壊された事例が・・・
見つかる事例って、ほとんどがこのスレの「SQLite 2のDBが壊れた」君だね
風説の流布ですか
432 :
NAME IS NULL :2007/06/23(土) 19:21:15 ID:zO59Z1T1
どういう条件で破壊されるのか既知なんだから調べればいいのに。 風説とか何とか書いてるのが限界になってるかもね。
どういう条件で破壊されるのか既知なら風説の流布とか言われないのに
そもそも脳が壊れてるんだからDBが壊れているかどうか判断つかないだろ
>>428 マジレスするのもなんだが、
accessだとMS Access以外も拾うぞ。
壊れてないのに・・・。ただ3で2のファイルを開けないだけ・・・。
ていうか全般的に日本人のレベル低すぎね・・・。 ここには詳しい人も数人いるみたいだけど。
開けるけど、そのまま書いたらファイルが壊れる。 sqlite2のことは全く無視する悪い子です。
439 :
NAME IS NULL :2007/06/24(日) 09:02:31 ID:ppVYIGey
3.4.0はかなり変更があったので対策が必要。
>>438 再現手順教えてよ。
そもそも開けなくね?
% sqlite2 -version
2.8.17
% sqlite2 foo.db 'CREATE TABLE foo ( foo TEXT );'
% sqlite3 -version
3.3.17
% sqlite3 foo.db 'CREATE TABLE bar ( bar TEXT );'
SQL error: file is encrypted or is not a database
%
「Access 修復」の検索結果見たら 泣けてきたw
442 :
NAME IS NULL :2007/06/24(日) 11:21:22 ID:1tDw2dkS
>>428 googoleで
「PostgreSQL 破壊」が71,000件
「Postgre 破壊」が315件
?????
>>437 キチガイを基準に日本人を語られても…
そもそも日本人かどうかも怪しいしw
おっと、気違い本人にレスしちまった。汚れちゃったよ。
だから元々3から2のDBは読めないっつーの。 壊れてるのは馬鹿の脳内だけ。
そしてsqlite2のDBファイルが壊れていてorz
脳が壊れるのとDBが壊れるのは等価なんだお
何その怪しすぎるページ。
Safari の設定にも SQLite3 が。
SQLiteの使い方について詳しく教えてくれるHPってどっかにありませんか? あったら教えて下さい。
マカはウザイ。
iPhone にも SQLite 3.1.3 が使われてるらしいな。
455 :
NAME IS NULL :2007/07/03(火) 12:58:38 ID:dbjO94XR
class Genre(SQLObject): name = StringCol(length=200) artists = RelatedJoin('Artist') class Artist(SQLObject): name = StringCol(length=200) genres = RelatedJoin('Genre') albums = MultipleJoin('Album') class Album(SQLObject): name = StringCol(length=200) artist = ForeignKey('Artist') これに相当するSQLもしくはmysqlってどんなのですか? MultipleJoinとか魔法みたいに便利なんだけど
>>これに相当するSQLもしくはmysql とりあえずこの部分にもんのすごい違和感を感じた事を報告します。
ORM 脳の恐怖を垣間見た気がした。
ぱいぱいそん
おまいら、正直に白状しろ。「質問の意味がさっぱり理解できない」とな。
質問の意味はわかるけど、答えがさっぱりわかりません!
>>461 >これに相当するSQLもしくはmysqlってどんなのですか?
の説明お願い
>>460 別に隠すつもりはないが、さっぱりわからない
マカって頭悪いね。 日本で売ってない時点で負け。
マカって馬鹿だな(w
V2にeuc-jpでデータ格納してるのをutf-8にポロっと3秒くらいで変換して くれるようなツールはないかな コード書くのもマンドクサなんだが
dumpしてnkf通して読み直せばいいんでないの?
Windowsでsqlite3.dll使ってるけど DBファイルのパスに日本語が入ってるとDBをオープンできないのは仕様?
しようがない。
元防衛大臣乙
Windowsなら、dllを食べずにソースからBuildすればいいじゃない?
開発してる英語圏の香具師が、日本語のフォルダの環境をテストできる訳ないと想像できない所がマカらしいな。
ソースからBuildするとどう解決するの?
tksqliteだと日本語パスでも開けるぜ・・・。dllの使い方間違えてるだけじゃないのか・・・。
パッチは自分で当てンだよ。このハゲ。
>>470 使う関数による。
sqlite3_open16() なら普通に日本語が使えるが
sqlite3_open() に Windows の MBCS を入れると化ける。
sqlite3_open() を使うなら UTF-8 に変換してから入れろ。
>>478 UTF-8 に変換してsqlite3_open()でいけました。
つかドキュメントのsqlite3_open()の項に書いてあったのに後で気づいたorz
たすかりました
Windows 版の sqlite3_open() は3.3あたりで実装がこっそり変えられててな、、、 それ以前は、渡した文字列をそのまま CreateFileA に渡してたから、 ドキュメント通りに UTF-8 文字列を渡すと日本語ファイル名が化けた。 実装変更後は、渡した文字列は UTF-8 -> UTF-16 変換した後で CreateFileW に渡すようになったので、それ以前とは逆に ドキュメント通りにUTF-8 で渡さないと化けるw
sqlite3_open16()使えばいいじゃん。他の文字列の問題もあるからUnicodeビルドが良いよ。 今のVCはUnicodeビルドがデフォだし。
そんなこというとまた 2.0 厨がくるぞーw
sqlite廚に自己コンパイルが出来る香具師は皆無。 ほとんどがマカとかrpm廚だしな。 コンパイル済みの配布をひたすら待つだけしか出来ない。
普通、自分でコンパイルするんじゃないの?
俺は自分でコンパイルしているが、普通ではないと思っている。 まあ BSD/OS なんて使ってるのがそもそも普通ではないのだが。
普通がいいなら普通のものを使えば良いのでは?
普通がいいとは一言も言ってないんだけど・・・
異常な奴ほど「普通」に憧れるものだ
普通のやつほど、普通じゃないっていう方がしっくりくるな。
永遠に2.0を使い続けるおれさまが来ましたよ
もう帰っていいぞ
いいDBなのに数名クズがいるなw
件数の多いリストを表示用にSELECTする場合には、 LIMITで件数制限をかけると思いますが、 そうすると、LIMITをかけない場合の件数が分かりません。 (件数はページリンクで使う) MySQLだとSQL_CALC_FOUND_ROWS→FOUND_ROWS() を使うことによって、LIMITを使っても全件数を取得できます。 SQLiteでは、SELECT count(*)を使って、 同じ結合条件&WHERE句で、 2回クエリーを発行するしか方法はないでしょうか?
>>493 selectの結果に○/○とかしたいの?
おいらはsqliteは組込用途でいじりはじめたばっかだから便利なマクロみたいのあるのか知らんけど、もしおいらが何とかsql一発でやらなくちゃなら、各テーブルの合計件数とテーブル名を持ったビューなりを作っておいて、ジョインして使うかなぁ
普通はアクセス使ってるしな。 つまりsqlite使ってるおまいらは異常。 全件数のカウントってメモリ喰うからな。組み込みDBとしては厳しいだろう。 どうしてもsqliteでやりたいなら、ソース弄ってパッチ書いてくれ。
pragma page_sizeを大きくすると検索速くなる?
>>493 select hoge1,hoge2,count(1) as rec_count from foo where hoge1='hogehoge' ;
LIMIT入れようと入れまいと、count 取ってりゃページング処理は書けるでしょう。
498 :
NAME IS NULL :2007/07/14(土) 17:53:13 ID:Afh1sfem
DBはいいのにスレにゴミが混じってるな
ゴミは簡単に見分けられるから実害は少ないね
マカ=ゴミ。
>>497 ウソ書いてましたごめんなさい><
やっぱり
>>494 と同じようなことするしかないかも。
SQLiteって複数のプロセスで同じDBアクセスしても平気なの? 歯痛成魚する?
平気だよ。
>>502 PRAGMA synchronous; を読んでみて。
そのページを見る限り、PRAGMA synchronousは、ディスクとの同期のオプションであって 排他制御のオプションではないようだが。
>>469 遅レスだけどありがとう
nkfを通せばよさげだね
508 :
493 :2007/07/17(火) 15:57:17 ID:???
>>494 ,501
ありがとうございます。
特に専用の方法がないようなら
素直に select count(*) します。
他の人も良く使うだろう使い方だと思ったので
専用の方法が用意されているならそれを使おうと思っただけです。
MySQLは専用の方法があるのに気付いたの1年ぐらいたってからだったw
select *, (select count(*) from hoge) from hoge limit ...
>>506 SQLite は Serializable しかサポートしていない。
唯一の例外が Shared Cache Mode で、この場合だけ
Read Uncommited を選択することができる。
511 :
493 :2007/07/18(水) 09:23:17 ID:???
>>509 ありがとうございます。
無理に1クエリーにしたいわけではないのです。
512 :
NAME IS NULL :2007/07/18(水) 10:40:46 ID:7KqvJ1g9
Windows で ODBC ドライバ経由で SQLite 3 のデータベースに 接続してみた。Access 2007 からはテーブル一覧が取得できて リンクテーブルとしてアクセスできるんだけど、 Visual Studio 2005 のサーバエクスプローラからは 接続できるもののテーブル一覧が取得できず使いにくい。 Access 2007 からはリンクテーブルとしてアクセスできているし、 Visual Studio 2005 からもテーブル一覧は取得できないものの SQL 文は正しく実行できるので SQLite3 用の ODBC ドライバが 動いていないとは思えないんだけど、なんでテーブルの一覧を 取得できないんだろう。
ん、odbcドライバはまだベータ版だったと書いてあった気がしたのだが
514 :
NAME IS NULL :2007/07/18(水) 21:47:11 ID:7KqvJ1g9
そ れ く ら い 自 分 で 実 装 し ろ
516 :
NAME IS NULL :2007/07/19(木) 07:22:12 ID:injH7iwR
俺は繋がったが?
518 :
516 :2007/07/19(木) 08:14:50 ID:???
スマソ IEの設定のせいみたい 他のブラウザやpingなら繋がる
やっぱりアクセスって最強だよな。
>>519 あぁ最高だよね
重たいし、使い勝手が悪いけど、なんといってもWindowsしか使えないし
名前がアクセスのくせに同時アクセスに糞弱いしな。
そもそも比較対象とする理由が全くわからないし
逆にウィンドウズだと十分。マカには無理だが。
マカにはアクセスと同等以上のソフト 4th Dimension がある。 アクセスと違ってそのままクラサバにもできる。
525 :
NAME IS NULL :2007/07/21(土) 17:38:40 ID:8EbashlF
出来ると言うことと実用になるということは異なる。
526 :
NAME IS NULL :2007/07/21(土) 18:58:16 ID:hcsb6jDM
sqliteファイルサイズでかくなりすぎない? INDEXも貼ってないんだけど これ、データ管理に何バイトくらい使ってんの?
>>526 なんで具体的な例も出さないで同意を求めようとするの?
528 :
NAME IS NULL :2007/07/21(土) 20:17:14 ID:hcsb6jDM
同意って言うかデータ管理に何バイトくってんのかが知りたいんだけど
530 :
NAME IS NULL :2007/07/21(土) 21:18:29 ID:hcsb6jDM
>>529 釣れないこと言わないで管理バイトおしえれよ
知ってるんだろ?
マジレスすると、ソース嫁
3.4.1
533 :
NAME IS NULL :2007/07/22(日) 00:28:32 ID:y/9NnjYh
>>530 どうせ知らないんだよ、ここにいる奴らなんてそんなレベル。
まあ、おれも知らないが
管理バイト(笑)
535 :
NAME IS NULL :2007/07/22(日) 01:14:27 ID:+wK1MY93
とりあえず、複数プロセスからの同時アクセスの歯痛成魚は 行っていないということですね。ありがとうございました。 自前で歯痛するようにいたします。
レス読んでたら歯が痛くなってきちゃったじゃないか
漠然と歯痛と言われましてもねぇ。
なんだ、SQLiteって複数プロセスから同時アクセスすると、ファイル壊れるのか。 Access並だな。
壊れる壊れないは人によるみたいですよ
くだらない。
はいはい皆さん 「脳が壊れる事とDBが壊れる事は等価」 これは試験に出ますよ
>>537 は漠然と〜と言われてもとか言いたいだけ
何も理解していないwwwww
英語のドキュメントって読めない人が多いんだな。小卒ワカイソス。
>>543 日本語のドキュメントなら読むと思っているおまえは青二才
DBのファイルが15G超えました。
547 :
NAME IS NULL :2007/07/22(日) 14:37:54 ID:y/9NnjYh
サーバのアクセスパターンを解析するために、 アクセスログ+処理結果を適当にパースしてつっこんでる。 約3ヶ月分。 INDEXが付いてるところは、遅くなってきてはいるけど、まあ問題ない。 INDEXが付いてないところは、遅すぎて普段の処理では使えない。 ただ、ゴミ掃除とかの、データを整理するときしか使わないので、 あんまり気にしてない。帰るときに流して放置するから。
エロ動画だろ
550 :
NAME IS NULL :2007/07/22(日) 21:37:01 ID:+wK1MY93
INSERTしたとき、いつファイルに反映されますか?
クローズした時
明示的に BEGIN TRANSACTION した場合は COMMIT したとき。 そうでなければ INSERT 完了時。
試してみりゃすぐ分かるじゃん・・・
SELECTするときトランザクション開始しないと遅い なんてレビューを読んだんですがこれほんとですか? 自分でやったら10万件程度なら問題なかったですが SQLiteってSELECTの結果セットを持ちますよね?
うそです。おまえが正しい。
結果セットって、メモリに持つんですか? SELECTの結果が10万件とかのときって、10万件分メモリが必要?
559 :
NAME IS NULL :2007/07/23(月) 16:48:06 ID:tFlavIkf
Windows の .NET 環境から使おうと思ったんだけど、 ODBC ドライバ経由と ADO.NET プロバイダ経由の どちらがいいと思います?
俺も、System.Data.SQLiteがいいと思う。
>>558 世の中にはスワップファイルという物があってな
まあいやらしい
>>562 なるほど
スワップは切ってる としたらどうなるんだろう。 死んじゃうのかな・・・
>>556 INSERT するときはトランザクション開始しないと糞遅いのは有名だけど
SELECT するときはデマだろ。
デフォルト動作ではSELECTの実行中はDB全体をロックしっぱなしなんだから トランザクションも糞もないだろ、常考
567 :
NAME IS NULL :2007/07/26(木) 10:42:38 ID:XuMdc/ZM
MS Access や phpMyAdmin のような GUI で操作できるツールはないでしょうか?
オープンソースですよ
>>570 sqlite3.exe を同じDBに対して2つ同時に立ち上げて、
片方で SELECT を実行してる最中にもう片方で更新かけてみろ
>572 そんな事したら、ファイルが壊れちゃうよ。
糞ACCESSと違って、普通のDBはその程度では壊れない。
複数プロセスからのアクセスで歯痛成魚していないらしいからな。
>>573 壊れないように全体をロックしているんだろ・・・
まあ基本的にBetter DBMなんだから、基本は
クライアントアプリの組み込み用途がメインだと
思う。PHPが採用してから何か方向性を勘違い
されるようになった。
>>575 先日から必死で嘘の風評流してるな。そういう仕事の人?
> 基本はクライアントアプリの組み込み用途がメインだと思う。 ということにしたいのですね?
>>577 本当に風評なら今ごろ真っ当な反論が出ている筈とは思わんかね?
>>579 あまりにアホらしい(英語読めればすぐ判る)から反論する気にもならないだけでは?
>>578 いや本当だって。設計見ても、生い立ちみてもそうだろ。
そう思いたくない理由でもあるのか。あるなら聞こう。
SQLiteをWebサービスで使うのは普通だけど アクセスをWebサービスで使う奴なんていないよね^^;
>>581 むしろおまえの生い立ちと脳の設計について聞きたい
意地でもクライアントアプリの組み込み以外の用途で使わせたくない香具師がいるな。 drh か?
いつものキチガイ粘着でしょ
このスレはいつでもけんか腰だな。うんざりするわ。 だから流行らないんだよ。
SQLite無茶苦茶流行ってるよなぁ。 本来は最適でないのではと思える用途にまで使われるほどにw
これでけんか腰って。 2ちゃんねる初心者かよ!?
だからいつものキチガイ粘着でしょ
>>587 いや、別にこのスレ読まなくても使えるから無問題でしょw
>582 SQLiteをWebサービスで使ってるとこって、同時アクセス数が1を越えそうにないとこ だけだろ。
ファイル形式がバージョンによってどんどん 変わって行くのだけは勘弁な
ファイル形式が変わるだけならともかく、「これはDBファイルじゃない」とか エラーメッセージが出るから、ファイルが壊れたかと思ってあせる。 「バージョンが違う」ぐらい出せるだろうに。不親切にもほどがある。
595 :
NAME IS NULL :2007/07/27(金) 22:39:31 ID:7YCGbYh8
コマンドラインからは.tablesでテーブル一覧を表示できますが、 sqlを使ってテーブル一覧を取得するにはどうすればいいですか?
596 :
NAME IS NULL :2007/07/27(金) 22:53:40 ID:mNF9qJRa
select name from sqlite_master where type='table';
>>595 sqlite_masterというテーブルがあるからそれをとりあえず
全レコードみてみましょう
何が書かれているかわかります
600 :
NAME IS NULL :2007/07/27(金) 23:15:46 ID:mNF9qJRa
phpからさsqliteにvacuumかけた直後に DBファイルのファイルサイズとってきても変らないんだけど、なんで? x=filesize($DBFILE); queryExec("VACUUM;"); y=filesize($DBFILE); でxとyが一緒になる。 結果画面表示後、ファイルサイズみると減ってるんだけど・・・
>>600 明示的に DB を close してみればサイズ減ってるんじゃない?
と適当なことを言ってみる。
602 :
NAME IS NULL :2007/07/27(金) 23:33:18 ID:mNF9qJRa
>>601 x=filesize($DBFILE);
$db->queryExec("VACUUM;");
unset($db);
sleep(1);
y=filesize($DBFILE);
オブジェクト指向タイプで記述してるけど
こうやってもだめだったんだよ
603 :
NAME IS NULL :2007/07/28(土) 00:23:20 ID:5B6IuqJm
事故解決した。 int filesize ( string $filename ) ファイルのサイズを返し、エラーの場合は FALSE を返します (また E_WARNING レベルのエラーを発生させます) 。 注意: PHP の数値型は符号付整数であり、 多くのプラットフォームでは 32 ビットの整数を取るため、 filesize() は 2GB より大きなファイルについては期待とは違う値を返すことがあります。 2GB から 4GB のサイズのファイルについては sprintf("%u", filesize($file)) を使うことで打開されます。 注意: この関数の結果はキャッシュされます。詳細は、clearstatcache() を参照してください。 ~~~~~~~~~~~~~~~~~~~ clearstatcache()ねじ込んだらできた
sqliteは複数同時アクセスには対応できないの?
>>605 ごめん、意味わかんないからお前は答えなくていいや
select でreadlock掛かるってことは
select中に他からのselectはできるってことだろ?
そして、select中に他からのinsert/update/deleteは不可。
トランザクション開始中の他からのselectは?
トランザクション開始中に他からトランザクション開始できるの?
そもそも、行ロック、テーブルロックはないのか??
そもそもSQL-92にSELECT〜FOR UPDATEがない
>604 SQLiteを呼び出す時は、事前にflock()が必須。
>>607 begin-commit/rollbackは?
てかさ、そもそもsqliteは読み取り一貫性の保証ないの?
>>609 スレッド利用するなり、複数のプロセスで実験するなりでたしかめたらいーだろ。
確認に3分もかからん。
>>610 よくそういうこと言う奴いるけど、分かんないのかな?
自分で確認できるならとっくにやってるだろ、出来ないから聞いてるんだよ
知らないならスルーして、知ってる人は教えて下さい。
>611 自分で確認できないという理由についてkwsk ぱっと考えつくような理由だと、「=SQLite自体使うことができない」ということになりそうなもんだが…… (例) 検証用プログラムを実行できる環境がない→実働するプログラムを動かす環境もないってことだな?
>>606 全部できる。君の思ってる理想のように動く。間違いないよ。
>>609 なかったら人はそれをDBMSと呼ばない
>>615 sqliteをDBMSと呼ぶかはアレだな
>>614 その手の言葉を吐く類はまともに答えられないことが多いので
使ったら負けかと思ってる
>>612 ヒント1:環境がない
ヒント2:スキルがない
ヒント3:やる気がない
619 :
名無しさん@そうだ選挙に行こう :2007/07/29(日) 11:23:33 ID:uXQW/G64
今までmysqlしか使ったことがないのですが sqliteは複数のインデックスを同時に使用しますか? mysqlは一度に一度のインデックスしか使えないので、 複合インデックス等の工夫が面倒くさかったのですが sqliteはそういうことはしなくていいのでしょうか?
mysqlは一度に一度のインデックスしか使えないってどういうこと?
selectの結果セットは、結局メモリ上においてあるの? ということは、SELECT * のときは全部メモリ上に確保されるの? スワップの無い組込み環境だと全SEELCTはできない? それとも、結果セットなんてない? それだとSELECT中にINSERTとか出来ないような仕様でないと困るよね? ここんとこ解説してるサイトってある?
624 :
名無しさん@そうだ選挙に行こう :2007/07/29(日) 15:25:15 ID:uXQW/G64
>>620 一回のクエリにつき、一つのインデックスしか使われないということです
そのため、explainでインデックス使用状況を調べ、
インデックスなしのクエリが発行されないよう、
いろいろ気を配る必要があります
>>623 たぶん「結果セット」の意味を誤解している。
結果セットはあるがメモリ上に確保されるわけではない。
>>626 ありがとうございました
sqliteもそうだったのですかorz
>>625 なるほど。ありがとうございました。
たとえば、SELECT *とかしてる途中で
他の誰かがUPDATEで全部書き換えてしまったとき
メモリが超少ない環境ではどうなるのか気になったのですが
メモリが少ない状況で、他の誰かに使わせちゃ駄目だろ。 つまりアクセス並みに1ユーザで使うしかないよ。 あくまで組み込みDBなんだから期待しちゃ駄目。
>>629 そうですか
2プロセスからのアクセスで片方がUPDATEやINSERT
もう片方がSELECTという使い方を想定してたんだけど
というかこういう使い方が出てきたから自作DBから
SQLiteへの乗換えを検討してたんだけど・・・
というか、「メモリが蝶少ない環境」を想定しないといけない状況でDB? 確かにSQLiteは「組み込みDB」の類だが、「組み込み開発」に使えるほど「軽い」ライブラリじゃないと思う…… 携帯の制御プログラムがSQL発行するとこなんて想像もつかん。 # まぁ組み込みゆーても、Windows embeddedみたいな環境なら # SQL Server for embedded systemが使えるってくらいで問題ないとは思うが
>>631 そうですね
RAMは数メガあるので超少ないは言い過ぎでした
でも別途CFやらSDやらにDBを持ってるので
数万レコード程度は普通にあるんです
まあ当分は自作DBで頑張ってみます
2プロセスで書き込みは片方だけって状況なら全然問題無くね? てゆか「携帯の制御プログラム」ってどこから出てきた話かわからんけど、 ACCESS (Microsoft じゃない方の) も ALP で採用してるようだし、 「組み込み開発」にも十分向いてると思うんだがなあ。
>>634 携帯開発とかやったこと無い奴がしゃべんなよ。ってことで流そうよ。
636 :
634 :2007/07/30(月) 10:07:24 ID:???
>>635 ごもっとも。スマソ。もう黙っときます。
ちなみに、「2プロセスで書き込みは片方だけ」のつもりが、
検索する側でテンポラリテーブルを作ってしまっていてハマったことがある。
このスレには質問にケチしかつけるしか能がないチョンがいるようですね
>>637 おまえも質問を書けばケチつけてやるぞw
このスレには質問に答えてもらえず煽りレスで鬱憤晴らす
>>637 もいるようですね
ストレス解消に役立ってるなら結構なことだ
>>639 あまり強い言葉を使うなよ
弱く見えるぞ
>>640 そこに気づくとは…こいつ、かなりの切れ者…!
やっぱりマカって馬鹿だよな。
なん…だと…!?
sqlite2つこうてるけど テーブルのリネームすら出来ないってありえねーな
まだ2使ってるって馬鹿?
3だとできるんだっけ?
650 :
NAME IS NULL :2007/07/31(火) 20:52:53 ID:/ZQXLUmN
>>646 PHPだと3にはPDOでしかアクセスできない
&PDOがバギーらしいんで2にしたんだよ
PHP使ってる時点で(ry
なん・・・・だと・・・・!?
Safari使ってる時点で(ry
なん・・・・だと・・・・!?
655 :
NAME IS NULL :2007/08/01(水) 07:41:34 ID:WEk3363h
なん・・・・ばら・・・・!?
まさか…これ程とは…
>>630 マルチプロセスで両方SQLite3を使っている場合、
片方がSELECTしている最中は、もう片方から
書き込みをCOMMITすることはできないよ。
複数のプロセスから共通のDBを使いたい場合に
同時実行性を上げたいなら、共有キャッシュモードで
DBアクセス専用プロセスを作って、他のプロセスは
DBアクセス用プロセスとプロセス間通信を行って
DBアクセスをするといい。
>>658 COMMITする意味を考えれば、COMMIT後に前の結果が返るのは困る場合が多いのではないか?
>>659 SQLiteはSerializableかRead Uncommitedのどちらかしか
サポートしてない。
通常はSerializableで、COMMIT実行にはは排他ロックが必要
(=他のプロセスがSELECT中はCOMMITできない)
共有キャッシュモードではRead Uncommitedが選択でき、
その場合はCOMMITとSELECTを同時に実行できる。
というか分からないならRead Uncommitedについて調べろ。
>>658 > 複数のプロセスから共通のDBを使いたい場合に
> 同時実行性を上げたいなら、共有キャッシュモードで
> DBアクセス専用プロセスを作って、他のプロセスは
> DBアクセス用プロセスとプロセス間通信を行って
> DBアクセスをするといい。
そんな手間をかけるくらいならもう他の DBMS 使った方がよくね?
「他のDBMS」っつーのも結局やってることは
>>658 と同じわけで。
組み込み用途なら、複数プロセスから同一のDBファイルを
アクセスするようなユースケースはあんまないだろ。
>>662 ユース・・ケース?
いや、まさにそういうケースにぶち当たったんだけどね。
まあなんとかするさ
つまり同時アクセスは駄目なDBって使えないじゃん。 Safariみたいに同時使用はあり得ない用途でしか使えないってことだな。 PHPからアクセスさせるなら1ユーザのみに限定とか(w
そもそも、組み込みDBってそういうもんだし。 同時アクセスは駄目じゃないけど、パフォーマンスが劣悪になる。 仲介プロセスが必要になるなら、さすがに MySQLなりポスグレ使うなりしたほうがいいと思う。
SQLiteとPostgresじゃ規模とかインスコの手間とか違いすぎるだろ。 その中間に、FirebirdとかdBASE、FoxProとかが有るんじゃないの? 使った事無いけど。
667 :
NAME IS NULL :2007/08/02(木) 18:12:20 ID:kmFMFn/s
ExcelVBAからSQLite使う方法ありますか?
669 :
661 :2007/08/03(金) 01:12:57 ID:???
>>662 同じだから、車輪の再発明をするだけ無駄ってこと。
>667 ODBCドライバがあるからそれで使える。 はず。
つーか組込用でクラサバでもないのは初めてから分かってる事なのにアホな事言う奴が多くて失笑ものだな… コンパクトでソースコードも付いててローカルDBとして気軽にアプリに組込んだり便利だな… 使用目的を勘違いしているアホチンは余所に行って欲しいよw
>>671 組込み用とだとばかり思っていたよ。ごめんね。
公式でも組込み用と明確に書いてあったから
ついうっかり信じ込んでしまったみたいだ。
これからは気をつけるよ。
公式で書いてある組込み用ってのはアプリケーション組み込み用ってことであって 組込みデバイス向けってことじゃないってかそんなことはみんな知ってるよな…
へへへ、俺は知ってるよ。他の人のことはわからん。
何でもいいが今時並列処理できないDBなんていらないといってみるテスト。 時代はマルチコアでっせー。
だから、できるってば
クエリーのマルチスレッド実行とか高い同時実行性が欲しいなら 他のDBMS使えでFAなんだが。 DRHは別にそういうの目指してるわけじゃないし。
まぁ、本来「アプリ組み込み用」だった SQLite が、なぜか 「PHP ランタイムに組み込まれて」しまったせいで、 他のリッチな DBMS と比べてあーだこーだ言われるのは DRH としては痛し痒しなんだろうなw
本来はクライアントの中で小さく使われるためのものなんだろうにね。
680 :
NAME IS NULL :2007/08/04(土) 08:48:53 ID:ln3oA6ly
681 :
NAME IS NULL :2007/08/04(土) 09:06:06 ID:qS1j1fWl
>>680 書いてあるないがそんなに重要なのか?
自分で考えて使えないの?
>>681 いや、公式がどうのこうのって言うわりには何も読んでないなって。
683 :
NAME IS NULL :2007/08/04(土) 09:27:55 ID:qS1j1fWl
>>682 みみっちぃなw
そんなどーでもいいこと放っておけよw
公式には、組み込み用とはPHPへの組み込みを意味するって書いてある。
FAQによれば、複数プロセスで同時にアクセスするのは UNIX上ではやめとけ と書いてあるな。 Linux上ならいいのかしらん?
>>677 でもこんだけ小さいDBMSって他にはそうそう無いべ
ManagementSystemじゃなくてEngineだべ
あー そうだったべ
どこだったかC言語による読みやすいコード…と説明されていたが、禿げしく読みづらいと感じるのはおいらがC++なプログラマーだからなのか、もしくはヘタレだからなのだろうかw 車輪人生脱却するために今の内に頑張っておくか…
読みやすいかどうかは比較対象の問題では?
良く使うアプリのコードと読み比べてみるってのは? この世で最も多く使われるプログラムというとlsあたりかな
経験値の浅い漏れは、ハンガリアン記法は SQLite で初めて見た。
DLLなしでWin32ネイティブで完全に組み込みたいんだけどどうやるの?
何の利点があるの?
表面上SQLiteを使っていないように見えるw
スタティックリンクしたいって話か?
ファイル名変えとけば、分かりゃしないよ。
sqliteってマルチコア非対応だしな。マルチコア環境で同時更新できなのでは、割と致命的。 表面上、自前でDB用意しましたよってことにしたいとか?
>>693 ソースをプロジェクトに突っ込むだけで静的にリンクできるはず
>>698 よくわからんw
sqliteはライブラリだぞ。
アプリがマルチコア対応なら同時更新できるだろw
701 :
NAME IS NULL :2007/08/05(日) 15:42:07 ID:sjhv7VHk
SQLite.DLLをVB(A)から使うにはどうしたらいい? そのままで使える?
702 :
NAME IS NULL :2007/08/05(日) 15:56:53 ID:DwKotpp3
普通に使えるだろ
>>700 アプリで対応しなきゃ駄目ってことでしょ?
ただ、マルチコア非対応とは書いてない
非効率とはあるけど
めちゃくちゃ更新が多いとかでなきゃそれほど非効率ってわけでもない
>>702 宣言がstdcallになってないから
旧VBからだと使えない気がするんだが、どうだろう。
VB.netなら問題ないと思うが。
706 :
NAME IS NULL :2007/08/05(日) 19:26:07 ID:sjhv7VHk
>>705 戻りの型とかはバリアントで通用するのかな?
てか、sqliteはphpからしか使ったことなかったけど
php関数まんまの関数無さそうだね、あれでかなり使いやすくラップしてたんだ・・・
VB.netだと、intならDeclare Function 〜 as Int32、void ならDeclare Subでいけるハズ。 ポインタ関係はIntPtrで適当に扱うしか。
708 :
NAME IS NULL :2007/08/05(日) 20:00:21 ID:sjhv7VHk
VBAでは?分からん??
710 :
NAME IS NULL :2007/08/05(日) 20:22:31 ID:sjhv7VHk
>>709 d読んでみる
仮に呼べたとしても
そのままではphpの関数のようには使えないでFA?
リンクの仕方なんてここで聞くことかよ・・・。 majiでレベル低過ぎだろ・・・。夏厨にもほどがあるぞ・・・
データベースなんてただの道具ですよ sqliteはただのおもちゃですよ
>>711 そうだな。VBのスレ(よく知らんけど)でやれって感じ。
リンクの話は
>>693 だろVBの話とは別じゃね
SQLiteって業務での実績ってあるの?
ACCESSがどーのこーののやり取りほどは不毛じゃないと思うが。
アップルは業務でSpotlightを作ったんじゃないのか?
717 :
AC厨 :2007/08/06(月) 00:08:50 ID:???
呼んだ?
>717 あよねでも聞いて鬱ってろ、この公共広告機構野郎
720 :
NAME IS NULL :2007/08/06(月) 20:18:47 ID:oraWsScS
sqliteコンパイルしようと思ったら c:\sqlite\source\icu.c(34) : fatal error C1083: インクルード ファイルがオープンできません。'unicode/utypes.h': No such file or directory こんなん出たんだけど、3.4.1は何か必要なの?
少なくとも間接的には業務で使われてる事にはなるだろうな MS謹製のアプリでもIE等、結構組み込まれて使われてるし googleもだったか ただオリジナルのコードはあまり残って無い程いじられてそうだがw
723 :
NAME IS NULL :2007/08/06(月) 20:58:12 ID:oraWsScS
>>721 ていうか、落として北sqlite-source-3_4_1にはそんなヘッダファイル入ってないんだよ・・・
>>722 過去ログにもあるけど FTS の部分なんかは Google の中のひとが contribute しとるよ。
725 :
NAME IS NULL :2007/08/06(月) 22:42:05 ID:oraWsScS
icu.cに /* Include ICU headers */ #include <unicode/utypes.h> #include <unicode/uregex.h> #include <unicode/ustring.h> #include <unicode/ucol.h> の記述があるんだけど、ICU落としても<unicode/utypes.h>しか入ってないのは何でだよ
727 :
NAME IS NULL :2007/08/06(月) 23:01:04 ID:oraWsScS
ext/icuは別にコンパイルしなくてもいいだろ・・・、Makefileくらい嫁よ・・・ まじでれべr低すぎだろ・・・
729 :
NAME IS NULL :2007/08/06(月) 23:05:32 ID:oraWsScS
全ての人が自分と同じレベルにいると思うな で、必要ないの?
これってさ、最初からクソでかいファイル用意して サイズ膨らまさずにその中でよろしくやってくれって 出来るのか?
731 :
NAME IS NULL :2007/08/09(木) 18:27:06 ID:1iu5Z0TY
icu外したら こんどは別のエラーでた コンパイルできねーよ
732 :
NAME IS NULL :2007/08/09(木) 20:01:30 ID:1iu5Z0TY
1>main.obj : error LNK2001: 外部シンボル "__imp__SysAllocStringByteLen@8" は未解決です。ってなんだお
733 :
NAME IS NULL :2007/08/09(木) 20:17:54 ID:1iu5Z0TY
ヘッダーファイル取り込む
Express使うような貧乏人にはコンパイルされたくないのかもねぇw
736 :
NAME IS NULL :2007/08/09(木) 21:43:35 ID:1iu5Z0TY
vc6proでも出来なかったんだ、煽る暇あるなら調べて来い
おまえのvc6割れてるだろ。俺にはわかるぞ。でなきゃ 初めて使うかのようなアホな質問しないからな
738 :
NAME IS NULL :2007/08/09(木) 22:22:12 ID:1iu5Z0TY
ヒント:会社
結局ICUってなんだったの?
集中治療室だっけ?
ICUはunicode関係のライブラリだよ。
VBから入ろうって奴が、いきなりVCで自力DLLコンパイルは敷居が高いと思うぞ。 前の呼び出し規約の話もそうだが、リンクとかDEF書いてエクスポートとか 色々覚えないとだめなことが多い。
743 :
NAME IS NULL :2007/08/10(金) 12:45:04 ID:4uO7Injt
環境がおかしいんじゃね?w ただダウソしてダイナミックもスタチックも何も気にせずビルド出来たけど 君にはまだ早いのかもしれんね むつかしい事は大人になってからすれば?w
747 :
NAME IS NULL :2007/08/10(金) 18:27:47 ID:WTiVmQh3
>>742-746 昨夜無事コンパイル完了してます。
VB用の拡張機能の動作もOK
原因はlibがリンクされてなかったこと
あれ、パス通しただけじゃ駄目なんだね
まあ、一度コンパイル通ればこっちのもんだ
色々機能拡張も出来る
またマカか。馬鹿だな。 業務ユーザがあの薄っぺらなキーボード使うと本気で思ってるのか?
>>749 君のような薄っぺらな人間よりはマシでは?
ここは SQLite を使う事に関して語るスレであって Visual Studio の使い方をお勉強するスレではない。 SQLite なんて、わざわざ VC 用のソースまで配布されてるのに それがコンパイルできないっていうようなレベルの人間は このスレに書く前に「できる Visual Studio」でも読んでろ。 世の中にゃ、UNIX 用のソースしかなければ自力で Windows に 移植して使う人間だってゴマンといるんだよ。
うんそうだね
終わった話をいつまでしてんだかw 乗り遅れてくやしかったか?
Windowsのソースや、Unixのソースは公開されてても、マクに移植すら出来ないのがマカ。 sqliteのパッチ当てすら無理だし(w
またおまえか
758 :
NAME IS NULL :2007/08/14(火) 15:34:08 ID:VUBT5dwm
リモートとローカルの SQLite のデータベースを 簡単に同期させる方法ってないかなぁ。 自力でがんばりたくない他力本願野郎です。 かといってレプリケーション機能が完備されている 他のクラサバ型のデータベースを使うのも重いなぁと。
>758 朝晩、「南無阿弥陀仏」と唱えると良いでしょう。
760 :
NAME IS NULL :2007/08/14(火) 16:59:15 ID:VUBT5dwm
>>759 毎朝は無理だけど、数日前に唱えました。
お坊さんも家に呼んで、一緒に。
ちなみに、今まで本願が成就したことはありません。 人生30年程度生きてきて一度も。 阿弥陀仏におすがりするしかありません。
なんとなく、 MySQL あたりを使った方がトータルで実装&運用コスト低い気がする。
Google Browser Sync みたいなことを自分のアプリでも やりたいなぁって。googlegear みたいなものに任せろ っていう意見もあるかと思うんですが、できれば データのストアにはSQL使いたいです。 それに別にウェブアプリをオフライン化したいとかじゃないし。
データ変更のタイミングがプログラムの起動・終了時とかに限られてて 常時書き換えが起こるもんでもないという条件であれば、 適当なファイル転送プロトコル (scp とか rsync とか) 使えば良いんでないかい?
>>766 残念ながらデータベースのサイズがかなりでっかいんですよ。
なので丸ごとというのはちょっとなぁ、と思っている次第です。
自前でレコード単位でのバージョニングをやって、
変更があったところだけ同期させるとかしかないかなぁ。
同期アルゴリズムについて広く扱った文献ってあります?
SyncML とかの関連文書を読めばいいんだろうか。
それともソースコードのバージョン管理を模倣すればいいんだろうか、
Subversion とかでやってることを。
SyncMLはプロトコル決めただけだから その用途では手数がかかり過ぎるので勉強する意味はあまりない いきなりレコード単位でどうこうすることを考えるより まずはSQLiteのDBファイルをrsyncしてみて 実用に耐えなかったら次の手を考えることにしたらどうよ
>>767 > 残念ながらデータベースのサイズがかなりでっかいんですよ。
> なので丸ごとというのはちょっとなぁ、と思っている次第です。
なら、SQLite を選ぶのは間違い。
素直にレプリケーション機能が実装されてる DBMS 使え。
rsyncで差分転送は効かないの?
マカって無知なのに自覚無いから、周りに居ると迷惑だよな。 無理なものを無理と認識できないのがマカ。自称専門家だけにタチが悪い(w
またおまえか
>>770 ログファイルみたいに単純に追記するタイプのファイルなら差分転送効くけど、
SQLite みたいにファイルの途中も書き換わるタイプのファイル形式だとダメじゃないかな。
>>773 rsyncにはバイナリ差分転送があるでよ
ならそれでいいじゃん!
776 :
NAME IS NULL :2007/08/15(水) 07:38:14 ID:ZGw0XGaS
マ・・・カ・・・?
変わるところが、追記されたところと、 indexぐらいなら差分転送が効率よさそうな気がする。 まあ容量次第じゃね? ちょっといじって、DBを書き換えるSQLを保存するようにして、 それを転送して、リモートでも実行してはどうか。 自前レプリケーションだが。
778 :
NAME IS NULL :2007/08/21(火) 18:13:08 ID:veBr/p1H
寂れすぎ
SQLiteって面白いな。あ、スレがあった と思って遊びに来たら 留守だった
そりゃ何かクエリ発行してもらわないと
insert into [SQLite 5] (ID, name, res) values (NULL, NULL, 'SQLiteって面白いな。あ、スレがあった と思って遊びに来たら 留守だった')
誰か過去スレのログとか持ってないかな。 select * from [SQLite 〜4]
784 :
NAME IS NULL :2007/08/24(金) 19:38:45 ID:Bcq7TFwB
このしょーもない奴色んなスレに張られてるな
>>783 持ってるけど不毛だよ。延々としょうもない
煽りあいばっかで何の役にも立たないよ。
>>786 4000レスの全てが不毛ってわけではないでしょう。
その中に少しでも毛が入ってるなら読みたいです。
791 :
NAME IS NULL :2007/08/26(日) 15:03:18 ID:RWaRFn9B
>>786 不毛かどうかじゃなく、
くれるかどうかを知りたいんじゃないか
@"CREATE TABLE GOALS(GOALS_ID integer primary key , CATEGORY varchar (50), PRIORITY integer , SUBJECT varchar (150) , DESCRIPTION varchar (500),START_DATE datetime , COMPLETION_DATE datetime)" こんな感じのテーブルに string category = "category-" + (i % 1000).ToString(); string subject = "subject-" + (i % 100).ToString(); Cmd.CommandText = string.Format(@"insert into goals values({0},'{1}',{2},'{3}','descrript','1970/1/1','1970/12/12')", i, category, i, subject); こんな感じに100万行インサートして "select subject,count(*) as count from goals group by subject order by count desc"; こんな感じに検索すると Sqliteだと11秒、SqlServer2005Expressだと1.7秒なんですがこんなもんでしょうか? ちなみにインサートはSqliteが90秒、SqlServer2005Expressだと280秒ぐらいでした。 CPUは2.4GDuo、メモリは2G
>>793 GPLでも使いにくいのに、有料製品なのかそれ
alter table で列削除できないのな。 中途半端なDBだな
>>795 製品を作るんであれば、品質保証もあるしサポートも受けられていいんジャマイカ
インデックスは?
799 :
794 :2007/08/29(水) 15:22:19 ID:???
自分に対しての質問かわからんがcategory,subjectにインデックスつけてみた。 インサートが2,3割ほど遅くなるが検索は同等もしくは早くなる SQLiteだとインデックスつけたときに行数が多くなるにつれてインサートスピード若干ずつ伸びてくね。
>>797 残念ながらそういうのが役に立った経験ってほとんど無いんだよね。
で、みんなフリーなDBに流れて行く。w
業務で使わん限りサポートなんてイラネ
SQLでのカラム一覧の取得はどうしたらいいんでしょうか・・・(´・ω・`)
livedoor Blog の裏側
http://pmakino.jp/tdiary/20051213.html#p01 >当初はお金で解決しようとして、某商用 DB (DB2 らしい) と高性能なハードウェアで凌ごうとしたが、
>・(当然だが) 高い
>・高い割に、期待するほどの性能を発揮してくれなかった
>・使い慣れないし、ブラックボックスなので、トラブった時自力で解決できず、ベンダーサポートに頼るしかない
>・サポートも必ずしも満足できるとは限らない
>等々の事情から、結局また MySQL に戻ることにした。
>>797 いや、めいいっぱいフリーソフトなんだ
しかもパブリックドメインの
805 :
とかち :2007/08/30(木) 01:24:16 ID:???
806 :
NAME IS NULL :2007/08/30(木) 12:25:13 ID:hAaTUNg1
>>802 pragma table_info(テーブル名);
で情報は取れるみたいですが、どうやったら他のSQL文と連携させられるのかわかりません。
いつもはCのAPIのsqlite3_column_name()で取ってるもので。
パブリックドメインなのは、SQLiteだろ。 Ultra LightはSQLAnywhereじゃねーか
Cから直接触ってる奴がアンチに変貌する予感・・・
C API は変更されてないのになんでアンチに変貌するんだか
Cを知らない人なのだろうね
>>810-811 変更されとるがな。Cインターフェースで非互換があるって
ドキュメントに書いてあるがな。確認しないで脊髄反射で
反論してくるこういう連中まじで不可解だわ。なんなの?
この程度で困るのはCを知らない人では?
>>813 程度の問題ではないだろう
変更が全くないか、しゅこしでもあるかは全然違う
だから、しゅこしでも変更されちゃって困るのはCを知らない人では?
>>814 3.4.2から3.5.0で、C API の変更内容は次の3点だと思うが、他にあるのけ?
1a. アンドキュメントな API sqlite3_os_switch() を削除した。
2a. sqlite3_enable_shared_cache() は、実行スレッドのみではなく、全スレッドに適用するように変更された。
2b. sqlite3_soft_heap_limit() は、実行スレッドのみではなく、全スレッドに適用するように変更された。
3c. sqlite3_release_memory() は、実行スレッドから接続したDBのみでなく、全スレッドの全DBについてメモリ縮小を行うように変更された。
SQLiteのソースをパッチして使っているユーザや、
細かくパフォーマンス調整を行っているユーザ以外は、
困ることはないと思う。
>>815 ライブラリ差し替え時に総チェックだけで済むならいいけど
コードの改変が不可避ですってなったら顧客がいい顔しない
ってのが普通。俺が書いて俺が使うだけならどうでもいい。
>>817 コード改変しないことが顧客の希望なら、安定版(3.4.x)を使い続ければOK。
まあ、API非互換が >816 の内容のみなら、特殊なことをやっているユーザ以外はコード改変不要だと思う。
どうやら
>>809 が興奮して先走り汁を出してしまったようだな
>>817 コード改変禁止なら使うライブラリも変えちゃダメじゃないかwww
おまえ意味不明だよ
俺は正体不明
私は意識不明
俺らの名前は NULL
我らは POINTER
ワレワレハ ウチュージンダ
仕事で使ってる香具師は変態。 無料ソフトでサポート無いのに(w
Googleのエンジニアは変態だったのか
Appleのエンジニアも変態
無知は罪なりってな
ムチはSMなり
キムチは韓国ニダ
834 :
NAME IS NULL :2007/09/08(土) 14:28:20 ID:oIkAOIKu
ここまでの流れで少し気になったんだけど、SQLiteは決して慈善事業じゃないはず。 OSSではなくPDSにしたのは受益の構造を変えたわけではなく力量に合わせて そうしただけだと思うのだが。 祝福を与えるというのはもちろん宣伝文句なわけで、それを宣伝文句以上に 受け止めるのはなぜなんだろう。
>>834 日本語で書いていただけないでしょうか?
836 :
NAME IS NULL :2007/09/08(土) 14:45:37 ID:oIkAOIKu
>>835 すいません。
どこがわかりにくかったでしょうか?
>>834 作者の DRH は思想的にけっこうイっちゃってる人なので
宗教的信念でやってるんだと思われ。
アプリケーション組み込み用途だとOSSでもまだ不便だからPDSにしたんだと思うよ 対象アプリケーションのソースツリーに入れる時に アプリとSQLiteのライセンスが適合するか判断する必要があるだけでも不便。
841 :
NAME IS NULL :2007/09/10(月) 11:24:32 ID:ZSvaalBa
>>840 >>838 みたいな人が多いんだよねぇ。
どこをどう読めば宗教的信念になるのかさっぱりわからんのだけど。
直接的に金銭を動機としない行動はすべて宗教と考える単純な人なんでしょ
SQLite調べたのですがよくわかりません。 『サーバとしてではなくアプリケーションに組み込まれて利用される軽量データベースである』 とありますが、サーバとして動くのでしょうか? サーバで動くとして、SQLiteはどの程度広まっているのでしょうか? (勉強したとして、SQLiteが使えるレンタルサーバがなかったら嫌なので)
勉強って、、使うだけなら5分もあればいいがな・・・ ミドル開発するんじゃあるまいし
>>843 C言語ライブラリ。 SQLを解釈するISAMライブラリといったところか。
unixでいうdaemon、windowsでいうserviceとして単独で動くわけではない。
846 :
NAME IS NULL :2007/09/10(月) 22:47:49 ID:VSqb6OQa
>>807-
>>842 までの流れが気持ち悪い
↑おまえら死ね
>>843 >サーバとして動くのでしょうか?
SQLite にサーバという概念はない。
Web サーバのスクリプト環境の中で使えるか否かという話をすれば、
sqlite 付きでビルドされた PHP5 や
DBD::SQLite モジュールがインストールされた Perl で使える。
>サーバで動くとして、SQLiteはどの程度広まっているのでしょうか?
PHP5 に標準で組み込まれてるから
レン鯖の PHP が5なら SQLite 関数が使える可能性が高い。
ただ、レン鯖で PHP5 が使えるところはあまり多くないだろう。
とりあえずさくらのレンタルサーバは PHP4。
他のレン鯖がどうなのかは知らね。ぐぐれ。
Perl の場合は DBD::SQLite がインストールされていれば使える。
例えばさくらのレンタルサーバにはインストールされているから使える。
848 :
843 :2007/09/10(月) 23:46:57 ID:???
とりあえずアンチが発生する程度には SQLite も有名になったってことかな? みんな丁寧にスルーしてあげてなー
PHP5.1以降はSQLiteは標準で組み込まれない
PHP厨が減るならちょっと嬉しい
854 :
NAME IS NULL :2007/09/12(水) 21:50:08 ID:X3W6T7I5
ほんとだ、標準じゃなくなるのはちょっと困るな
SQLiteマンセー DLL版をwindowsのsystem32に標準で入れてもいい レジストリなんかやめて、各ユーザーディレクトリにSQLite DBを置いたらいい
設定ファイルなんぞはini, conv, xmlでいい
> レジストリなんかやめて、各ユーザーディレクトリにSQLite DBを置いたらいい それは、今各ユーザディレクトリにある ntuser.dat の 内部形式がSQLiteになるって言ってるだけだぞ? それで何が変わるんだよw
なぜか。 regeditの検索の遅さを観れば、アレがDBとしては考えられていないことがわかる。ただツリーっぽい構造があるだけ。 SQLなら、検索も抽出もできるし、ある種のファイルシステムのようにBLOBデータをぶち込んでもいい。 でもそれがなんに使えるかは判らない。 昔の人は琥珀をこすると静電気が起こることを知っていたが、それがなんに使えるかは長い間誰もわからなかった。
SQLiteにしたらツリーっぽい構造がなくなって困るわけだが。 2つのアプリが同じ名前のDBファイル作ろうとしたらどうすんだ。
それはツリーのノードにも言える。
むしろ、それに「WinFS」って名前を付けて、ファイル操作APIから直接読めるようにして、 Vistaにバンドルしてしまえばよかったんだよ
>>859 確かに性能が良くなるだけで何も変わらないだろうなw
俺なんか良いことを言った希ガス? VHDみたいにDBをHDDみたいにマウントできて、SELECTクエリを使ったスマートフォルダが作れたら、 検索も集計も一瞬じゃないか HDDをガーガー鳴らしてインデックスを作成することもない。
つ MacOS
それってspotlightのインデックス検索にSQLiteつかってるだけなんじゃね?
つ libsqlfs
>>868 資料少ないからよくわからんけど面白そうだな?
ファイルシステムをポータブルなDBに閉じ込めてしまえば、将来コンピュータのメモリ階層が劇的に変わって
フラットな64bitアドレス空間にDRAM、フラッシュ、HDDが展開されるようなことになっても、
DBさえコピーすれば別の媒体にバックアップもできて、DBらしくインデックス無しで高速に検索もできる、
なんてことも、技術的には不可能ではないな。
もちろんそのころにはSQLiteではない何かだろうけど
>DBらしくインデックス無しで高速に検索もできる はぁ?お前、何かしらDBに幻想を抱いてないか?
うん、まさに幻想を抱いているんだよ。 データベースがストレージなら、ネットワーク上のDBMSサーバーはネットワークドライブの供給元みたいな 存在になる。でも、FTPやWindows共有のような現実的なものじゃない。 フォルダ単位でのファイル管理の概念は薄れて、タグ付けされたブログの記事のように、内容は名前と属性で抽出される。 カレントディレクトリという概念がなくなって、すべてのデータが動的に集まったり集計されたりする。 これは幻想的なストレージじゃないの
それから勘違いしないでほしいのが、「インデックス無しで」というのはGoogle Desktopとか インデックスサービスとかが作ってくれる巨大な検索データベースを無しでってことで、 CREATE INDEX〜 とかやるあのインデックスのことじゃないんよ
MSはそのようなものを計画していたらしいね 結局色々ポシャッたあげくが今のVistaだが
>>873 WinFSはSQL Serverベースという話だったね。
MSがLonghornの構想段階でそこまで考えていたなら、なんてもったいない企画倒れかと感じる。
でも実際、使える仕様なんて責任持ってはまだ誰にも考えられないと思うよ。
875 :
NAME IS NULL :2007/09/13(木) 23:53:44 ID:STs/kD64
> SQLiteにしたらツリーっぽい構造がなくなって困るわけだが。 正規化すればいいだけだろ。
>>872 それって CREATE INDEX 〜 のかわりに
CREATE FULLTEXT INDEX 〜するだけじゃね?
どんな DB でも一瞬で検索するには何かしらのインデックスが必要
WMIはモロSQLっぽい引き方出来おるけど あれはいったい何なんだい?
>>860 > regeditの検索の遅さを観れば、アレがDBとしては考えられていないことがわかる。ただツリーっぽい構造があるだけ。
普通はレジストリは検索することはない。
おまいは幸せだな
「検索」の意味を知らないだけだろ
レジストリはどう考えてもハッシュをたどっていくことしかしないよな?
レジストリ全体から spyware.exe を含む項目を検索して一覧表示できるぞ。
883 :
NAME IS NULL :2007/09/15(土) 18:02:25 ID:RucH5tWF
じゃぁ、WindowsではSQLiteの代わりにレジストリ使おうぜ!
はぁ?
885 :
NAME IS NULL :2007/09/15(土) 20:33:11 ID:/rl8tKAi
レジストリって、VACUUMできるの?
一応できる
887 :
NAME IS NULL :2007/09/15(土) 21:30:02 ID:STKuBrgm
>>855 マニュアルはお前みたいのが読んでくれるから助かるw
>>882 できるけど、普通はそんなことしないだろ?
パラダイムシフトとはそういうことだ サランラップだって売り出した当初は誰にも使い方がわからなかったw
サランラップの話がしたいのならよそいけ
まったくだな。帰る
今働いてる会社は、SQLiteで業務運営してるんだけど信頼性とかどう思う? DBサーバでDB→CSVを行って、それみてWebとか運営してる。 なんかあまりDBの意味ない気がするんだが。素人でスマン。
>>892 検索条件がキメ細やかに出来る可能性を持っているという一点だけで
DBの価値はある
なるほど。ありがとう。
確証もない変な脳内妄想してるやつが多いな レジストリ関係のWin32API見れば大体の事が分かるだろ
>>895 おまえにサランラップの何がわかるというのか!
つか、アンカーつけようよ
>>892 Windowsつかってんでそ?
そんなら信頼性もクソもないから気にするなw
LinuxやFreeBSD使ってりゃ信頼性有るとでも思ってる馬鹿がまだ存在していたのか。
>>895 お前だけだよ。変な妄想しているのはwwww
馬鹿話もいい加減にしろ! お前らまとめてTRUNCATEしてやる!
VACUUMしないといつまでも沸いてでますよ
俺がツッコんで欲しかったのはそうじゃなくて!
Ω<sqliteにはtruncateないよ
906 :
NAME IS NULL :2007/09/22(土) 07:29:47 ID:cYc7BsFu
>>905 命令としては無いけど確か自動でやるんじゃなかったっけ?
908 :
NAME IS NULL :2007/09/22(土) 12:55:05 ID:pQDt4ke/
>>907 それ2003.08.06になってるけど、情報古くない?
古いことがなんかの理由になるのか?
910 :
NAME IS NULL :2007/09/22(土) 21:03:25 ID:sbj4/T3T
2004年あたりにpragma使わないと自動でやらなくなったとか
911 :
NAME IS NULL :2007/09/23(日) 07:26:00 ID:Aqae30Ei
truncateしてくれないならレジストリ使ったほうがいいな。 レジストリなら複雑な問い合わせでも工夫すれば速いし。
英文の単語単位の前方一致検索がしたくて、抽出条件に Value GLOB '*[^a-z]hoge*' って してみたけど、単純な Value LIKE '%hoge%' に比べてずいぶん遅いねぇ。何か速くなる方法ないかな?
FTSを使う
それってGLOBでもインデックスが使われるもんなの? FTSのMATCHでは単語前方一致のような機能はなさそうに見えるけど 勘違いなら俺の尻をぶって叱ってくれ
いやもうね、SQLiteが一番トラブルないってのが不思議なんだよ V2だけど SAPにへばりついてるオラクル市ねって感じ
916 :
912 :2007/09/26(水) 18:41:57 ID:???
すまん単なる最適化不足だ 無視して!
917 :
NAME IS NULL :2007/09/26(水) 19:24:57 ID:CF0OeSbD
>>916 いや、日本語の情報が不足してるから、むしろわかったことがあれば
書いてもらったほうがありがたい。
2チャンネルには、そんなことも分かんないのかーwwwっていう天才君が
多いけど、実際使ってる人間はそれなりに苦労して使ってるはずだから。
>>917 うーーん、多分 SQLite以外のほとんどのDBMSに共通な、レベル低そうな話で悪いんだけど。
たとえば、英語の青空文庫が数万ページあったとして、1ページ1レコードとしたテーブルから、
「hogで始まる単語」を含むページのみを抽出したい。ところが、WHERE Value LIKE '%hog%' で抽出すると
速いのに、WHERE Value GLOB '*[^a-z]hog*' で抽出するとすごく遅い。条件がより複雑だからね。
だから、Value LIKE '%hog%' に当てはまったレコードだけに絞ってから、より厳しい条件である
Value GLOB '*[^a-z]hog*' に当てはまるレコードを探せばいい。'hog' を含む単語なんてめったにないからね。
いわゆるスカウト法という奴。
つまり、
× WHERE Value GLOB '*[^a-z]hog*'
○ WHERE Value LIKE '%hog%' AND Value GLOB '*[^a-z]hog*'
と。最初からもっと頭使えということだな。
>>918 スカウト法 って一般的な言い方なの?
概念はコロンブスの産卵って感じで納得したけど
さっと見て望みのありそうな奴だけを探し出す、スカウト。俺に一般的な用語だったけど、 一般に一般的なのかどうかは考えてなかったかもしれん。なんかの木の効率的な探索で そんなアルゴリズムがあって、その解説サイトで使ってた用語が染み付いてただけさ
>>920 OK
今この時からこのスカウト法という表現を布教させるわ
「スカウト法」でぐぐると、「スカウト法」は無いけど「ネガスカウト法」というのがあるみたいね。
今後は「スカウト法」でぐぐるとここが出るようになるんだろうな。w
ワロス この指でまたひとつの罪を犯した!
じゃ俺はスカトロ法を普及させるわ
スカウター法:スカウターの数字をぱっと見て、望みのあるやつを探し出す
なにその夢のメソッド?
それってどんなベジータ?
929 :
NAME IS NULL :2007/09/29(土) 00:40:44 ID:3wjr94nz
でもスカウト法メッチャ便利だな 目からうろこってまさにこのことだと思った
sqlite3のソースをcygwinでビルドするとos_win.cでエラーになるなぁ 何かと思ったら、1329行目のreturn文にセミコロンが無かった #if defined(__CYGWIN__) cygwin_conv_to_full_win32_path(zRelative, zFull); return SQLITE_OK #endif
修正内容。 cygwinでコンパイルできるように、return文にセミコロンをつけた。
sqlite-users で drh が「スレッド=悪」とか言って大暴れしてて笑えるw
暗号化実装したフリーの改良版はないの?
無い。
見つけた
SQLServerExpressとSqliteで同じような処理(joinなどを含まない、select,insert,update)を行った場合に、Sqliteのパフォーマンスが、トータル時間でSqlserverの6,7割と若干早いのですが、こんなものでしょうか? 処理内容によっていろいろと変わると思いますが、参考意見あればお願いします(´・ω・`)
>>936 トランザクションをきちんとやらないとベリースローです。
938 :
936 :2007/10/05(金) 21:24:31 ID:???
トランザクションは入れてます。
そりゃそうだ
>>936 これは参考意見だが、処理内容によっていろいろと変わると思うよ。
2007-Oct-04 - Version 3.5.1
某ファイルの処理してて5000件丸ごとトランザクションにほりこんで最後にコミットしたら10秒で終わってワロタ それまで100秒くらいかかってたのに^^;
5000件で10秒って遅すぎないか?
戯言に突っ込み入るとは思わなかった・・・ ちなみにファイルはTrueCryptのコンテナに入れてるんすよ
落ちないこと前提だけど、 PRAGMA synchronous = OFF; にチャレンジしてほしい。
ベンダーのエンジンは最初から暗号化してる件
948 :
942 :2007/10/08(月) 17:18:03 ID:???
すげぇややこしくなったな ・5000個のテクストファイルがある(これらのファイルが暗号化してある) ・1つのファイルをいろいろ処理したものを1レコードとして登録する ごめんね
みんなベンチマークしかしないんだよw
テクストww
正確にはMD5+RSA+AES ちなみにSqliteレベルでの改造でdllが同封されてる wxWidgetsのラッパを使わなくても直接使えそう
wxWidgetsは権利ほとんど放棄のライセンスだから 純粋にSqliteライセンスに従ってOK
954 :
NAME IS NULL :2007/10/13(土) 18:04:43 ID:scvTFNaQ
sqliteで特定フォルダ内の全ファイル名についてのテーブルを作りたいんですが、 やっぱりFindFirstFileとかは自分でやる必要ありますか? (そういうファイル検索関係の機能はsqliteにありませんか?)
ありません。
ありがとうございました。 これからシコシコします。
ふぅ。今アタマの中が世界平和の事でいっぱいです(^^)
958 :
NAME IS NULL :2007/10/19(金) 15:47:13 ID:y19b4TGj
初歩的な質問なのですが、教えてください。 SQLiteには他テーブル・レコードの内容を参照してupdateする構文(updateの副問い合わせ)が 無い様なのですが、これは、insert or replace を使えと言うことなのでしょうか? バージョンは 2.8.17 (PHP5のバンドル版) です。
CREATE TABLE members( name UNIQUE, addr, birthday ); UPDATE members SET addr=(SELECT addr FROM members WHERE name='nida') birthday=(SELECT birthday FROM members WHERE name='nida') WHERE name='mona';
960 :
NAME IS NULL :2007/10/19(金) 16:53:24 ID:y19b4TGj
>>959 勘違いだったようです。
どうもありがとう。助かりました。
961 :
NAME IS NULL :2007/10/19(金) 17:16:57 ID:y19b4TGj
先ほど自分が失敗してたのは、副問い合わせではなく、相関副問い合わせでした。 お手数をかけさせてしまって申し訳ない。 こんな感じ。 CREATE TABLE members2( name UNIQUE, addr, birthday ); UPDATE members2 SET addr=(SELECT addr FROM members WHERE members.name=members2.name) , birthday=(SELECT birthday FROM members WHERE members.name=members2.name); エラー SQL logic error or missing database no such column: members2.name Oracleだと動くと思うのですが、相関副問い合わせはサポートされてないって事ですかね。
>>961 3.5.1でそれ試したら普通に動いたが。
963 :
NAME IS NULL :2007/10/19(金) 17:52:57 ID:y19b4TGj
>>962 そうですか。SQLite が成長してるのは喜ぶべきなんでしょうね。
自分のは、PHP5のデフォルト環境のままで使えるようにしたいので、SQLite2で頑張ってみます。
どうもありがとうございました。
これだからPHP厨は嫌われるのだ
>>964 問題はID:y19b4TGjの書き方だな。PHP標準のSQLite2という制約があるなら始めに書けよという。
別にPHP標準のSQLite2という制約でやりたいというのは厨でもなんでもないだろ
レンタルサーバーとかだったら当然そうなったりする可能性ある。
え、PHP 付属の SQLite って2だったんだ…
967 :
NAME IS NULL :2007/10/20(土) 00:34:58 ID:kvJpw6Cb
>965 は日本語をもっと理解できるように頑張るべきだ
>>966 PHP5.1くらいからSQLite3になった。
古いもの使ってる人は文句言っちゃいけないと思います
971 :
NAME IS NULL :2007/10/20(土) 14:40:18 ID:kvJpw6Cb
>>969 そうなの? PHP5.2.0 使ってるけど、SQLite は 2.8.17 が入ってた。
SQLite3を使うことはできるけど、標準バンドルはされていないんじゃない。
そういえば、PHPも 5.2.4に上げなきゃ。
>>970 そんな気はないんだけど、文句に聞こえてたらごめんね。
>>970 自分が書いてるわけでもメンテしてるわけでもないのに
なんでそんなに偉そうなの?
V2でもじゅうぶんですよ
オレ小学生
ぼくさんさい
ちゆ12歳
ゆとり教育世代が来るようになったらどんなスレも崩壊する