トップページDB@2ch掲示板
1002コメント312KB
SQLite Part.10
■ このスレッドは過去ログ倉庫に格納されています
0458NAME IS NULL
垢版 |
2015/07/06(月) 12:17:29.13ID:???
弱い を論理的にどうぞ
0459NAME IS NULL
垢版 |
2015/07/07(火) 08:33:31.65ID:???
SQLiteの欠点なんてネットにいくらでも情報が出てるだろ
少しは調べろっていう
0460NAME IS NULL
垢版 |
2015/07/29(水) 17:04:24.74ID:???
sqliteって正規表現検索が無いんだな。
0461NAME IS NULL
垢版 |
2015/07/30(木) 20:41:57.68ID:???
SQLite Release 3.8.11.1 On 2015-07-29
0462NAME IS NULL
垢版 |
2015/08/01(土) 01:05:44.56ID:???
>>460
正規表現使えるように改造すると良いよ。
0463NAME IS NULL
垢版 |
2015/08/06(木) 23:39:03.91ID:???
>>460
公式のextentionのregexp.cを組み込めば対応できるけど、標準のsqlite.dllでは出来ない。
あと、regexp.cでも、一致確認はできるけど置換が出来ないのが残念
0464NAME IS NULL
垢版 |
2015/08/07(金) 14:04:24.44ID:l/2WsGXW
データベース自体は単純な命令にのみ限定して
速度を上げるべき。データベースの出力結果を
phpやpythonの正規表現で処理すれば良いだけ。
0465NAME IS NULL
垢版 |
2015/08/13(木) 23:56:54.38ID:???
IN句に指定できるワード数は
Oracleは1000個、PostgreSQLは2000個、MySQLは上限なしとか決まっているようですが
SQLiteには制限ありますか
0466NAME IS NULL
垢版 |
2015/08/15(土) 22:45:27.21ID:???
>>465
100万ワードのin句を持つSQLをプログラム生成して試した。
select id from testtable where id in (1,2,3,....,1000000)
エラーにはならなかったよ。
0468NAME IS NULL
垢版 |
2015/08/16(日) 08:11:40.70ID:???
>>467

(1) テーブル作成
create table testtable(
id integer not null default 0,
xname text not null default '',
constraint pk_testtable primary key (id)
)

(2) データ2件投入
insert into testtable(id, xname) values(1001, 'hello')
insert into testtable(id, xname) values(1002, 'world')

(3) SQL 生成 & 実行
select id, xname from testtable where id in (1,2,...,N)

生成した SQL を sqlite3_exec で実行させて戻ってくるまでの時間

N=10000 285.892ms
N=100000 3960.603ms
N=1000000 43520.460ms

sqlite3 version 3.8.3.1
OS=Windows7 pro
CPU=Ivy Bridge 3770無印
0469NAME IS NULL
垢版 |
2015/08/16(日) 17:09:06.83ID:???
>>468
一箇所訂正

× 生成した SQL を sqlite3_exec で実行させて戻ってくるまでの時間
○ 生成した SQL を sqlite3_prepare_v2 で実行させて戻ってくるまでの時間
0470NAME IS NULL
垢版 |
2015/08/16(日) 18:14:20.35ID:???
速度の話が出ているので横から失礼します
Excelに接続出来る事を知りいろいろ調べているのですがリアルタイムに読み書きする時の速度はどんな感じでしょうか?
0471NAME IS NULL
垢版 |
2015/08/16(日) 21:01:55.98ID:???
そんなもんテーブル構造にもアクセス方法にもデータ量にもよりけりだから、自分で測った方が早いと思う。
0472NAME IS NULL
垢版 |
2015/08/17(月) 00:05:25.74ID:???
ん?
prepareではクエリの解釈だけで実行はされなかったと思うが
0473NAME IS NULL
垢版 |
2015/08/17(月) 16:29:35.95ID:???
>>468
エラーにはならないのは事実みたいね。
ほんとうの実測値が知りたいけど、後は各自がやるってことで。
0474NAME IS NULL
垢版 |
2015/08/19(水) 03:06:27.50ID:???
468 ですが、
Visual studio の IDE の中でテストプログラムを走らせると in 句 100 万件
のときにすごく時間がかかったのですが、cmd.exe から普通に起動してテスト
すると、1秒もかからなかったです。大変申し訳ありません。

ソース
http://www.rupan.net/uploader/download/1439920727.zip
dlpass:sqlite3

結果
SQLite3 version 3.8.11.1

#open: 1 ms

N=10000
#prepare: 8 ms
#step 1st: 6 ms
#step: 0 ms
#step: 1 ms
#finalize: 0 ms

N=100000
#prepare: 39 ms
#step 1st: 25 ms
#step: 0 ms
#step: 7 ms
#finalize: 0 ms

N=1000000
#prepare: 544 ms
#step 1st: 632 ms
#step: 0 ms
#step: 1 ms
#finalize: 56 ms

#close: 0 ms
0475NAME IS NULL
垢版 |
2015/08/30(日) 07:03:03.87ID:???
例えば2chのような巨大掲示板を運営するとして
ログにSQLite使うとします
普通は全体でDBを1つ用意するだけだと思いますが
DBってのは肥大するとSELECTも遅くなると思うので
お手軽SQLiteに限っては1スレッド1DBみたいなのでもいいんじゃないかと思ってるのですが
どうでしょう?やっぱおかしいですかね?
0476NAME IS NULL
垢版 |
2015/08/30(日) 08:31:17.57ID:???
>>475
基本的におかしい
サーバーはクライアントからのリクエストを見て
・url から該当のスレのデータベースを取得
・そのデータベースを開く
の操作が必要になる
もちろんレスのキャッシュや接続プールとかで高速化を図ればいいんだけど、なにか独自の技術でもない限りデータベース側に任せた方がいい
ビックデータ流行の時代なので巨大データに対する技術は色々開発されてる
0478NAME IS NULL
垢版 |
2015/08/31(月) 11:58:52.90ID:???
こんな感じでフォームのテキストボックスにログ流して表示しているのですが
このログをDBに入れるにはどうinsert文を書けばいいでしょうか?

String tickString = String.Format("{0},{1:HH:mm:ss},{2},{3}\r\n",
args.Instrument, args.Tick.DateTime, args.Tick.Price, args.Tick.Volume);

textBoxLog.Text = tickString + textBoxLog.Text;
}
0479NAME IS NULL
垢版 |
2015/08/31(月) 13:57:14.86ID:???
普通に
INSERT INTO log (time, message) VALUES (CURRENT_TIMESTAMP, 'message')
でしょ、
C#でどうすればいいかという話?
それともエスケープ?
0480NAME IS NULL
垢版 |
2015/08/31(月) 15:37:16.36ID:???
>>479
すみません説明不足でした
流れてきた内容をログの先頭に挿入しているだけの処理なのですが、最後の行をinsert文に変えるだけでいけるのでしょうか?
DBを初めて組み込むのでよくわかりません
出来ればc#でお願いします
0481NAME IS NULL
垢版 |
2015/08/31(月) 16:36:56.23ID:???
C#なら、、NuGetでSystem.Data.SQLiteを組み込んでると仮定して
using (var conn = new SQLiteConnection(@"Data Source=c:\temp\log.txt"))
{
 conn.Open();
  using (SQLiteCommand command = conn.CreateCommand())
  {
   command.CommandText = "INSERT INTO log (message) VALUES (?)";
   var param1 = new System.Data.SQLite.SQLiteParameter()
   {
    DbType = System.Data.DbType.String,
    Value = tickString,
   };
   command.Parameters.Add(param1);
   command.Prepare();
   command.ExecuteNonQuery();
  }
 conn.Close();
}
こんな感じ?
そもそもCREATE TABLEしとかなきゃだし、
RDBMSはINSERT順に意味は無いので、別のソート順を決めないとならんけど
現在時刻のカラム追加かオートインクリメントで数字入れとかね
0482NAME IS NULL
垢版 |
2015/08/31(月) 17:13:50.51ID:???
>>481
お忙しい中、ありがとうございます
勉強になります
0484NAME IS NULL
垢版 |
2015/10/16(金) 02:17:58.97ID:???
なんかNoSQLっぽくなったな
0486NAME IS NULL
垢版 |
2015/10/17(土) 11:02:12.52ID:???
JSON対応って、テーブルをJSONでダンプできるとかそういう機能じゃないんだな。
使いどころがよくわからん。
0487NAME IS NULL
垢版 |
2015/11/01(日) 02:50:40.22ID:Iaqw8dbT
sqlite4ってどうなの?
0489NAME IS NULL
垢版 |
2016/01/14(木) 23:35:35.04ID:???
SQLite Release 3.10.1 On 2016-01-14
https://www.sqlite.org/releaselog/3_10_1.html

New feature:
Add the SQLITE_FCNTL_JOURNAL_POINTER file control.

Bug fix:
Fix a 16-month-old bug in the query planner that could generate incorrect results
when a scalar subquery attempts to use the block sorting optimization.
0490NAME IS NULL
垢版 |
2016/01/24(日) 10:39:11.64ID:sOgNYorS
SQLite4はどうなっとんのや?
0491NAME IS NULL
垢版 |
2016/01/24(日) 21:47:10.38ID:LKzcjvMc
マ イ ン ド コ ン ト ロ ー ル の手法

・沢山の人が、偏った意見を一貫して支持する
 偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法

・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
 誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法

偏った思想や考え方に染まっていたり、常識が通じない人間は、頭が悪いフリをしているカルト工作員の可能性が高い

靖 国 参 拝、皇 族、国 旗 国 歌、神 社 神 道を嫌う カ ル ト

10人に一人は カ ル ト か 外 国 人

「ガ ス ラ イ テ ィ ン グ」 で 検 索 を !
0492NAME IS NULL
垢版 |
2016/01/30(土) 12:28:01.09ID:???
3.10.2(゚∀゚ 三 ゚∀゚)
0495NAME IS NULL
垢版 |
2016/03/14(月) 09:42:49.16ID:UPQCYJfo
sqliteってファイル作成時にあらかじめ任意のサイズを確保させることできる?
例えば…なんだろう、仮想環境のディスク領域みたいに
0496NAME IS NULL
垢版 |
2016/03/14(月) 10:20:19.81ID:???
page_size(バイト) * max_page_count = 任意のサイズ
PRAGMA page_sizeでページサイズを確認してそれにあったmax_page_countを設定する
PRAGMA max_page_count=N
0497NAME IS NULL
垢版 |
2016/03/14(月) 12:07:43.42ID:???
>>496
なるほどなるほど
教えてくれた単語で公式マニュアルもみてくるわサンキュー親父
0499NAME IS NULL
垢版 |
2016/03/15(火) 20:04:07.05ID:???
一個のファイルで出来るのがいいね
0500NAME IS NULL
垢版 |
2016/03/15(火) 20:09:55.84ID:???
SQL使って抽出できるものの中では最速なのがいい
0501NAME IS NULL
垢版 |
2016/03/19(土) 22:04:24.02ID:???
real型のカラムをWHERE句で取得したいんですが取れてきません
LIKE句なら取れてきます。WHERE句で取得するにはどうすればいいでしょうか?
WHERE hogeID = '11111.11111'を
WHERE hogeID = cast(11111.11111 as REAL);
とかしてもダメでした
0503NAME IS NULL
垢版 |
2016/03/19(土) 23:13:15.64ID:???
桁を落としてやってみよー
0504NAME IS NULL
垢版 |
2016/03/19(土) 23:38:29.09ID:???
ありがとうございます。やってみます
0505NAME IS NULL
垢版 |
2016/03/25(金) 21:16:01.75ID:???
前から気になってたんですが、
SQLiteってパーミッションの概念って無いんですか?
例えばcreateでSQLite用のファイル作成する時、
ディレクトリに書き込み権限がないと駄目とか。
0507NAME IS NULL
垢版 |
2016/03/26(土) 07:56:25.18ID:???
>>505
それってOSとかファイルシステムの話だろ
0508NAME IS NULL
垢版 |
2016/03/26(土) 11:28:20.63ID:???
そら書き込み権限の無いディレクトリにプログラムがどう頑張ったって・・・
データファイルとして、適当なディレクトリに置けばいい。
0509NAME IS NULL
垢版 |
2016/03/26(土) 18:01:41.69ID:???
>>506-508
つまり、SQLite使う場合は、予め保存先のディレクトリのパーミッションに、
書き込み権限を与えて送って認識でOKですか?
MySQLなんかだとパーミッションの概念がありませんが、
SQLiteの場合は、CSVファイルの読み書きと同様、パーミッション指定が必要なんですね
0510NAME IS NULL
垢版 |
2016/03/26(土) 18:16:48.24ID:???
RDBMSじゃなくて、単なるライブラリであり、DB本体が単なるファイルですからね。
私はpostgreSQL派ですけど、SQLiteは単純に使えて、共存も出来るんで使ってます。
0511NAME IS NULL
垢版 |
2016/03/26(土) 20:51:35.43ID:???
>>509
> MySQLなんかだとパーミッションの概念がありませんが、
あるだろ
ディフォルトだとインストーラーが適切に設定してる
他の場所にデータファイル置くなら同じように設定する必要があるよ
0512NAME IS NULL
垢版 |
2016/03/26(土) 22:01:39.34ID:???
事前にtouchとかで作っときゃディレクトリの書き込み権限いらん
もちろんtouchする時のアカウントが権限ないとダメだし
ファイル自身のパーミッションも必要だが
0513NAME IS NULL
垢版 |
2016/03/27(日) 11:50:19.14ID:???
>>511
DBにはサーバがアクセスするからパーミッションとかを
>>509レベルのユーザが認識することはほぼ最後までないと思う。
0514NAME IS NULL
垢版 |
2016/03/27(日) 15:21:22.73ID:???
まあSQLiteはDBアクセスするクライアントが直接DB操作するけど
MySQLはデーモンになってるからサーバープロセスを起動したユーザーの権限
もしくはchrootで移譲したユーザーの権限で動くからクライアントの実行ユーザーとは別物だわな
0517NAME IS NULL
垢版 |
2016/04/09(土) 14:23:38.52ID:???
3.12.1

https://www.sqlite.org/releaselog/3_12_1.html

・Fix a boundary condition error introduced by version 3.12.0 that can result in a crash during heavy SAVEPOINT usage. Ticket 7f7f8026eda38.
・Fix views so that they inherit column datatypes from the table that they are defined against, when possible.
・Fix the query planner so that IS and IS NULL operators are able to drive an index on a LEFT OUTER JOIN.
0519NAME IS NULL
垢版 |
2016/04/19(火) 20:30:38.78ID:???
3.12.2

https://www.sqlite.org/releaselog/3_12_2.html

・Fix a backwards compatibility problem in version 3.12.0 and 3.12.1:
 Columns declared as "INTEGER" PRIMARY KEY (with quotes around the datatype keyword) where not being recognized as an INTEGER PRIMARY KEY, which resulted in an incompatible database file. Ticket 7d7525cb01b68
・Fix a bug (present since version 3.9.0) that can cause the DELETE operation to miss rows if PRAGMA reverse_unordered_selects is turned on. Ticket a306e56ff68b8fa5
・Fix a bug in the code generator that can causes incorrect results if two or more virtual tables are joined and the virtual table used in outer loop of the join has an IN operator constraint.
・Correctly interpret negative "PRAGMA cache_size" values when determining the cache size used for sorting large amounts of data.
0521NAME IS NULL
垢版 |
2016/04/25(月) 01:32:55.95ID:???
エクセルから試行してるものですが
カラム50個程あるデータ(100万レコードくらい)の
selectで名前から参照のカラムを全部抜き出す事はできますか?
試したら名前しか出てこなくて困ってるんですが(ググっても同様な質問も見当たらず)
0522NAME IS NULL
垢版 |
2016/04/25(月) 09:04:07.71ID:???
エクセルからというのがよくわからんけど普通にできる
どうやったの?
0523NAME IS NULL
垢版 |
2016/04/25(月) 12:14:22.41ID:???
SQLiteForExcelってやつか
0524NAME IS NULL
垢版 |
2016/04/26(火) 21:54:12.16ID:???
localDBとどっちがいいの?
0526NAME IS NULL
垢版 |
2016/04/26(火) 22:16:31.29ID:???
localDBって今知った。
ソースの公開されてる方がいいけどね。
0527NAME IS NULL
垢版 |
2016/04/26(火) 22:21:41.00ID:???
>>525
理由を三つくらい教えてちょんまげ
0528NAME IS NULL
垢版 |
2016/04/27(水) 13:32:46.98ID:???
>>527
・知名度
知名度とは検索しやすさであり情報量の多さ

・マルチプラットフォーム
Windowsだけじゃなくどこでもなんででも動く便利さ

・拡張性、ツールの充実
関数追加とか簡単だし編集ソフトいっぱいあるし
0529NAME IS NULL
垢版 |
2016/04/27(水) 14:24:48.52ID:???
ファイル一個で完結してるの一番凄いと思う。
物理的にもオブジェクト指向みたいな。
0532NAME IS NULL
垢版 |
2016/05/20(金) 10:42:09.01ID:???
ごめん間違えた。
3.13.0 です。
0533NAME IS NULL
垢版 |
2016/07/02(土) 15:49:26.40ID:???
SQLite4のサイトって、去年からずっと更新されてないけど、計画自体取りやめになったの?
0535NAME IS NULL
垢版 |
2016/07/16(土) 09:59:10.20ID:???
エクセルのシートがわりに使うとさいこー
0536NAME IS NULL
垢版 |
2016/07/17(日) 20:40:39.11ID:???
>>535
だったらエクセルシート使う方が良いんじゃない?
0538NAME IS NULL
垢版 |
2016/07/18(月) 09:00:47.12ID:???
>>537
>>536
まずエクセルからデータを分離できるところ。
次にファイルでos問わず手軽に扱えるところ。
0539NAME IS NULL
垢版 |
2016/07/18(月) 18:17:44.06ID:???
エクセルの代わりにならないじゃん
0541NAME IS NULL
垢版 |
2016/07/18(月) 20:13:02.54ID:???
むぅわかったようなわからんような。
0542NAME IS NULL
垢版 |
2016/07/18(月) 20:20:58.74ID:???
>>541
ちと誤解を生む表現だった。
シートをデータ置き場から解放したい
のが目的。
シートは主としてビューワーとして使う
0543NAME IS NULL
垢版 |
2016/07/18(月) 21:09:55.50ID:???
sqlite自体ライブラリとツール群だからな。
なんとなくわかった かなと。
0544NAME IS NULL
垢版 |
2016/07/18(月) 21:39:06.41ID:???
google spreadsheetでええやん
0545NAME IS NULL
垢版 |
2016/07/18(月) 21:44:29.99ID:???
>>542
どのように使っているのか知りたい。
プログラム書いてるの?
0547NAME IS NULL
垢版 |
2016/08/11(木) 11:52:04.30ID:???
堅調にやってて乙
0548NAME IS NULL
垢版 |
2016/09/14(水) 19:59:55.07ID:8llEaiLn
3.14.2

http://www.sqlite.org/releaselog/3_14_2.html

・Improved support for using the STDCALL calling convention in winsqlite3.dll.
・Fix the sqlite3_trace_v2() interface so that it is disabled if either the callback
 or the mask arguments are zero, in accordance with the documentation.
・Fix commenting errors and improve the comments generated on EXPLAIN listings
 when the -DSQLITE_ENABLE_EXPLAIN_COMMENTS compile-time option is used.
・Fix the ".read" command in the command-line shell so that it understands that its input is not interactive.
 Correct affinity computations for a SELECT on the RHS of an IN operator. Fix for ticket 199df4168c.
・The ORDER BY LIMIT optimization is not valid unless the inner-most IN operator loop is actually used by the query plan.
・Fix an internal code generator problem that was causing some DELETE operations to no-op.
0550NAME IS NULL
垢版 |
2016/10/02(日) 17:48:55.17ID:???
手元のactiveperl5.24にDBD-mySQLが無かったがDBD-SQLiteがあったので使ってみた
個人で遊ぶなら快適だw
0551NAME IS NULL
垢版 |
2016/10/02(日) 18:13:40.47ID:???
一個のファイルですしぃ
0554NAME IS NULL
垢版 |
2016/10/21(金) 13:12:22.57ID:kSyZhxSg
俺も最近使い始めた。
OS Linuxmint18MATEでな。
PostgresqlやmySQLと違い日本語が入力できるのがいい。
0556NAME IS NULL
垢版 |
2016/10/21(金) 16:41:15.74ID:???
否、2箇所ばかりutf8に成らなかったからダメ
0557NAME IS NULL
垢版 |
2016/10/21(金) 22:56:16.13ID:PJ+SYe3B
>>555
OSはWindowsかね?
0558NAME IS NULL
垢版 |
2016/10/22(土) 00:17:48.93ID:???
>>554
何か勘違いしているような。
PostgreSQLもMySQLも正しく日本語扱えるよ?
■ このスレッドは過去ログ倉庫に格納されています

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