X



SQLite Part.10

■ このスレッドは過去ログ倉庫に格納されています
2012/08/16(木) 21:54:16.20ID:???
組み込み型データベース SQLite について語るスレッドです。

SQLite
http://www.sqlite.org/

・C/C++ API
 http://www.sqlite.org/c3ref/intro.html

・Syntax
 http://www.sqlite.org/lang.html

・Limits
 http://www.sqlite.org/limits.html

・Support
 http://www.sqlite.org/support.html
657NAME IS NULL
垢版 |
2017/11/25(土) 19:40:25.85ID:???
>>655
DBエンジンのインストールや設定って素人は難しく感じるようですね。
SQLiteは1ファイルで独立エンジン不要なのでローカルDBに使う分には良いですわ。
658NAME IS NULL
垢版 |
2017/11/25(土) 19:42:22.24ID:???
>>656
データベースのファイル名を変えるだけでは?
659NAME IS NULL
垢版 |
2017/11/25(土) 19:47:20.46ID:???
>>658
違う。
というか、調べた限り、ATTACH自体が新しい機能らしくて、そこまで整備されてない。
どの名前でもopenしたものはmainになるし、メモリ上のはtempになる。
それにATTACHしたものは自由に名前を付けられる、というか、つけないとsyntax上アウト。
で、mainの別名をつけられれば助かるんだが、、、
なお、tableやcolumnは別名を付けられる。
660NAME IS NULL
垢版 |
2017/11/25(土) 19:54:47.58ID:???
>>659
あ、そう言う意味でしたか。
開発元に聞くか自分でソースコードを見るしか無さそうですが、
StackOverflowで聞けば教えて貰えるかも?
困った時はStackOverflow英語版!
661NAME IS NULL
垢版 |
2017/11/25(土) 20:03:08.43ID:???
>>660
まあググっても出てこないし、多分まだ機能自体がないと諦めてるんだわ。
ありがとう。
662NAME IS NULL
垢版 |
2017/11/25(土) 20:10:41.94ID:???
>>661
dummy db作って実際に使うDBは全部ATTACHでと言うのは駄目なの?
遅くはなるだろうけど。
663NAME IS NULL
垢版 |
2017/11/25(土) 20:34:48.34ID:???
>>662
いやこれはソースコード上の美学の問題だから、それを構造まで広げるのはマズい。
どうしてもというのなら関数にすればいいだけだし、その方がマシ。
どのみち最終的にはコメントアウトで捨てるコードだし、
特にいいやり方がなければコピペで放置だ。

ただしtempにいったん受けた方が速い可能性があり、結果的にそれをやるかも。
具体的に言うと、sqlite_masterのマージで
少ない方を多い方にINSERTするわけだが、(どうやらこの判定はしている)
今のところliveに150、archivedは1000-10000スレ程度で運用する予定なので、
最低150のINSERTが発生して、これが0.05sかかっている。(ように見える)
tempで空テーブルを用意してやればこれが不要になる。
落ちるスレに150レスなら転記でINSERT150回必要であり、単純には倍速になる可能性がある。
というわけだ。
664NAME IS NULL
垢版 |
2017/11/25(土) 21:11:41.89ID:???
>>663
旦那、ソースコードの美学なんてもんに拘ってたら、日本の薄汚いIT業界で食っていけませんぜwww
665NAME IS NULL
垢版 |
2017/11/27(月) 12:31:20.51ID:???
日本の薄汚いIT業界でSQLiteなんて使わんだろ。
だいたいは自分の自主開発用とか趣味用だろ。
SQLiteでクライアントに納品してる奴とか保守してる奴とかいるの?
いるなら俺も雇ってくれw
666NAME IS NULL
垢版 |
2017/11/27(月) 12:38:03.57ID:dl62vFEl
自主開発てなんかイヤラシイな
667NAME IS NULL
垢版 |
2017/11/27(月) 12:56:06.29ID:???
イヤラシイのは自家発電
668NAME IS NULL
垢版 |
2017/11/27(月) 13:09:39.99ID:???
>>665
居るよ!
SQLServer Express、mdbの代わりに使える。
Andoroidアプリならデフォでしょうし。
669NAME IS NULL
垢版 |
2017/11/27(月) 14:45:54.11ID:???
SQLiteの爆速さと手軽さは中毒になるからな
670NAME IS NULL
垢版 |
2017/11/27(月) 21:00:36.34ID:nKW4iMOq
こおゆう大げさな事をゆう奴を信用してはならん
671NAME IS NULL
垢版 |
2017/11/27(月) 22:08:08.61ID:???
シングルユーザーで使う分には便利だよな
トランザクションとか自分で実装したくないし、遥かに信頼できる
672NAME IS NULL
垢版 |
2017/11/27(月) 22:10:53.86ID:???
>>669
速いかは微妙じゃないか?

俺は結局、PRAGMA SYNCHRONOUS = OFF; PRAGMA JOURNAL_MODE = MEMORY;
を常用する羽目になっているが、これってどうなのよ?と思うし。
ただし作者の「ジャーナルにはHDDの2回転が必要で、それくらいはかかる」
というのもまた正しいわけだが。
673NAME IS NULL
垢版 |
2017/11/27(月) 22:38:09.33ID:???
更新は遅いね
674NAME IS NULL
垢版 |
2017/11/28(火) 01:19:55.49ID:???
いっぱいあるだろ。
何と言ってもPublicDomainってのが使いやすい。
使ってても言わなくていいし。
675NAME IS NULL
垢版 |
2017/11/28(火) 19:58:13.47ID:???
ちょっと複雑なSQLを書けないところがNGかな。
副問い合わせとか。

それ以外はすんごくいい。
676NAME IS NULL
垢版 |
2017/11/28(火) 21:11:17.44ID:???
服問い合わせ程度ならSQLite3でできるでしょ
677NAME IS NULL
垢版 |
2017/11/28(火) 21:37:51.97ID:???
RIGHT OUTER JOIN、FULL OUTER JOIN が出来ないくらい?
678NAME IS NULL
垢版 |
2017/11/29(水) 14:42:34.87ID:???
>>673
AutoCommitしてんじゃねーの?
679675
垢版 |
2017/11/30(木) 05:52:18.47ID:???
>>676, 677
え?ほんと?
おぼろげな記憶だけど、

SELECT ...
FROM ...
WHERE xxx IN (SELECT...)

とかできなかったような・・・
680NAME IS NULL
垢版 |
2017/11/30(木) 06:49:33.48ID:???
こういう人はなんでググったり試したりしてからレスしようとしないんだろう...
https://www.sqlite.org/lang_expr.html#subq

お前さんのおぼろげな記憶とやらに興味はないし
681NAME IS NULL
垢版 |
2017/11/30(木) 07:15:36.60ID:???
>>679
そのクエリならできる。まさに俺が現在使っているし。
682NAME IS NULL
垢版 |
2017/11/30(木) 08:35:09.19ID:???
>>680
敵性言語で書かれている情報など読みません。
683NAME IS NULL
垢版 |
2017/11/30(木) 09:14:35.55ID:???
>>679
余裕で書けるのだが、何で出来ないと思ったのか聞いてみたい
684NAME IS NULL
垢版 |
2017/11/30(木) 09:35:48.26ID:???
>>683
してないから
685NAME IS NULL
垢版 |
2017/11/30(木) 12:06:22.71ID:???
一回試してタイプミスで文法エラーが出たのに
できないと思い込むケースはあるかもね
できないだろう、という先入観があるとどうしてもね
686NAME IS NULL
垢版 |
2017/11/30(木) 12:49:33.88ID:???
>>682
じゃあ敵が書いたプログラムなんか使うなよ w
687675
垢版 |
2017/11/30(木) 18:22:37.58ID:???
かなり前のことなので、残念ながら具体的なクエリは忘れてしまいました。
ただ、俺のメインはPostgreSQLなので、それに比べてSQLiteはSQLを書く
自由度がかなり劣っている印象を受けたのは事実。

思い違いかもしれないので、また今度触ってみるよ。
誤った知識でSQLiteのNG情報を流布しては申し訳ないしね。
688NAME IS NULL
垢版 |
2017/11/30(木) 19:42:18.44ID:ATTMxwZh
そんなに影響力ないから気にすんなw
689NAME IS NULL
垢版 |
2017/12/29(金) 11:06:14.25ID:dtNZwIie
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。

グーグル検索⇒『宮本のゴウリエセレレ』

M9UL2UMY6S
690NAME IS NULL
垢版 |
2017/12/29(金) 17:29:28.25ID:???
>>689
http://www.1seikou.biz/ad/3as/lov/
だそう
691NAME IS NULL
垢版 |
2018/01/23(火) 22:27:43.42ID:Wf3T2feU
3.22.0
https://sqlite.org/releaselog/3_22_0.html
692NAME IS NULL
垢版 |
2018/02/14(水) 13:24:45.81ID:???
☆ 日本の、改憲をしましょう。現在、衆議員と参議院の両院で、
改憲議員が3分の2を超えております。『憲法改正国民投票法』、
でググってみてください。国会の発議はすでに可能です。
平和は勝ち取るものです。お願い致します。☆☆
693NAME IS NULL
垢版 |
2018/02/26(月) 21:26:49.95ID:???
SQLite使おうと思って初めてスレきたけど
さすがに副問い合わせできないDBとか存在価値ねーよw
694NAME IS NULL
垢版 |
2018/02/26(月) 21:35:59.73ID:???
えっ?
695NAME IS NULL
垢版 |
2018/02/26(月) 21:48:49.59ID:???
>>693
普通に使えるけどウェブ検索もろくに使えない人には無理だろうね
696NAME IS NULL
垢版 |
2018/02/27(火) 09:06:03.32ID:???
>>694
びっくりするなよー
697NAME IS NULL
垢版 |
2018/03/04(日) 16:11:01.28ID:???
sqliteで足りないのはwindow関数くらいだと思ってる
698NAME IS NULL
垢版 |
2018/03/10(土) 09:59:47.54ID:rTcSh0Y2
Entity Framework Coreでマイグレーションが出来ない
これじゃ気軽にカラムの追加削除も出来やしない

Firebirdにするか
699NAME IS NULL
垢版 |
2018/03/10(土) 11:00:00.86ID:fKQ0bywh
【311人工地震説】今週末、2018.3.11(日)リチャードコシミズ福島いわき講演会のお知らせです【生放送】
http://rosie.5ch.net/test/read.cgi/liveplus/1520646161/l50
700NAME IS NULL
垢版 |
2018/03/10(土) 12:22:14.67ID:???
M$な人はaccessじゃねーの
701NAME IS NULL
垢版 |
2018/03/10(土) 12:51:13.03ID:mPREb+86
AccessってWindowsでもオワコンじゃないの?
702NAME IS NULL
垢版 |
2018/03/10(土) 16:14:51.18ID:???
Accessは帳票の入出力が簡単に作れるから現場ではまだよく使われてる
あとSQLiteに相当するデータベースエンジンだけならただでダウンロードできる
703NAME IS NULL
垢版 |
2018/03/12(月) 23:33:30.65ID:???
SQLserverとoleDBでネイティブ接続できる上に帳票やフォームが気軽に作れるのでAccessは神だったが、
OleDb廃止してadp作れなくなったaccess2013からは普通に糞。
単独で考えたときのjetSQLはさらに糞。
704NAME IS NULL
垢版 |
2018/03/12(月) 23:41:55.61ID:bDBXx0nx
SIじゃない事務系の職場で2007のUI変更は混乱起きたんじゃないかなあ
速度を気にしなければSQLの中に標準モジュールの関数を自由に使えるって結構すごい
705NAME IS NULL
垢版 |
2018/03/26(月) 17:59:27.14ID:???
sqli ver3てのはsqli3てことになるのですか?
ubuntuにsqliいれたいのですが3がはいってしまいます。
706NAME IS NULL
垢版 |
2018/03/26(月) 23:58:46.92ID:???
3でOK。
707NAME IS NULL
垢版 |
2018/04/11(水) 21:37:02.56ID:kqphfPe4
3.23.1
https://sqlite.org/releaselog/3_23_1.html
708NAME IS NULL
垢版 |
2018/04/29(日) 14:34:57.52ID:???
ubuntuにインストールしました。
コンソールからcreate ... と入力した場合、tableファイルはどこのディレクトリに作られるのでしょうか?
709NAME IS NULL
垢版 |
2018/04/29(日) 21:48:49.51ID:???
情報が足りなすぎるけどエスパーするとインメモリDBで実行してるからどこにも作られてない。
710NAME IS NULL
垢版 |
2018/04/30(月) 09:37:12.31ID:???
エスパー入門問題
711NAME IS NULL
垢版 |
2018/05/26(土) 13:22:27.01ID:???
何も指定してないとメモリ上に作られる、けどその後の流れ以下でOK?

datasouce指定なしor:memory:でインメモリdbで実行されて
createでtableができる

その後いったん接続切れると(C#だとconnectionつくったusingブロックを出ると)メモリ上のdbも消える
接続が切れなければ、datasouce指定なしor:memory:で、作ったdbを操作できる
接続が確立されてる状態だと、ほかconnectionから接続はできない

ただし、最初db作るときにcache=sharedで指定してやれば、接続が続く限り
「もう一つのconnectionを作って」そこからdb操作できる

このsharedの挙動がよくわからん
712NAME IS NULL
垢版 |
2018/05/26(土) 14:08:44.18ID:???
>>711
公式ドキュメントが凄くいいから読め
https://www.sqlite.org/inmemorydb.html
713NAME IS NULL
垢版 |
2018/05/26(土) 22:44:11.55ID:???
>>712
すまん、本家は一応目は通したんだけど
SQLiteというよりはC#での組み方を把握してないみたいだ
とはいえもう一度よく見てみるよ、ありがとう
714NAME IS NULL
垢版 |
2018/05/28(月) 20:25:00.22ID:???
select name, (suryo * tanka) as '合計'
from hoge;
はできるんですがこの合計の総和が取れずに困ってます。
どのようにしたらいいでしょうか?
715NAME IS NULL
垢版 |
2018/05/28(月) 20:48:30.06ID:???
select name, sum(suryo * tanka) as '総和' from hoge group by name
716NAME IS NULL
垢版 |
2018/05/28(月) 22:41:56.84ID:???
なるほど、このようにするんですね。
ありがとうございます。
717NAME IS NULL
垢版 |
2018/05/29(火) 12:29:45.70ID:???
このレベルのことを自力で解決できずに5chで聞くなんて
日本のプログラマーは素晴らしい
718NAME IS NULL
垢版 |
2018/05/29(火) 12:31:34.79ID:7/O8R114
>>717←このレベルのことを自力で解決できて誇らしいプログラマー
719NAME IS NULL
垢版 |
2018/05/29(火) 12:40:23.08ID:???
日本のプログラマーの低レベル化はとどまる事を知らず。
720NAME IS NULL
垢版 |
2018/05/29(火) 14:33:26.96ID:???
自力で解決する時間は自分持ちで
時間がかかると切られるのが日本
721NAME IS NULL
垢版 |
2018/05/29(火) 18:52:09.96ID:???
英数字を全角で書く奴は何をやってもダメ
722NAME IS NULL
垢版 |
2018/05/29(火) 18:57:20.30ID:???
と、言ってるおじいちゃんが未だにいる日本
723NAME IS NULL
垢版 |
2018/05/29(火) 20:49:31.56ID:???
基本的なSQLくらいは勉強してから使った方が良いけどね
724NAME IS NULL
垢版 |
2018/05/29(火) 23:23:10.95ID:???
>>722
いやさすがに俺の拙い経験でも>>721は正解だわ
あとカタカナを半角で書く奴も追加で
725NAME IS NULL
垢版 |
2018/05/30(水) 08:38:56.61ID:???
>>724
今のフォントだと半角カタカナは汚いがWin95の頃は普通に使われてた。今は半角カタカナを使う必要はない。

駄目なヤツは全角英数字と半角英数字の混在してるヤツ。1つの単語の中で混ぜるヤツは最悪。
726NAME IS NULL
垢版 |
2018/05/30(水) 19:12:18.92ID:???
>>715 みたいなのをチェックするのにこういうのが使える
https://ideone.com/bIMSux
727NAME IS NULL
垢版 |
2018/06/09(土) 10:21:54.43ID:???
PRAGMA journal_mode=OFF; PRAGMA synchronous=OFFで
VACUUMも速くなることに今更気づいた
728NAME IS NULL
垢版 |
2018/06/14(木) 14:28:34.78ID:???
create temp tableで作られたtableにデータを入れるときって
データどこに保存されてるの?
例えばconnection作るときにmemoryとかdbファイル指定したとして
そこにぶち込んでるわけじゃないっぽいんだけど
せっかくin-memory dbで作ってもよそに一時ファイル作って書き込んでるんだとしたら無駄だなとおもい
それともtempってした時点でdbファイルを指定してもメモリ上に、
in-memoryでもそのメモリ上のmemory(ややこしいなw)とは別のメモリ領域にぶっ込んでるのかな
729NAME IS NULL
垢版 |
2018/06/14(木) 20:07:04.71ID:???
>>728
コネクションがmemoryならテンポラリーもmomory
730NAME IS NULL
垢版 |
2018/06/14(木) 22:32:03.65ID:???
>>729
テンポラリに入れてから、そいつを加工してテンポラリじゃないデータに入れてるんだけど
テンポラリにデータぶっ込んでる時はタスクマネージャのメモリ使用量が増えないんだよね
visual studioのプロセスメモリも増えてない
731NAME IS NULL
垢版 |
2018/06/15(金) 00:27:55.61ID:???
なんでもいいから、だれか正規表現のdll作ってくれよー
732NAME IS NULL
垢版 |
2018/06/15(金) 07:49:38.53ID:???
作ったよ
733NAME IS NULL
垢版 |
2018/06/15(金) 08:34:36.31ID:???
>>730
タスクマネージャのデフォのメモリー表示だと全部のメモリー状況は出ないはず。
表示列を増やしてみれば?
734NAME IS NULL
垢版 |
2018/06/15(金) 23:28:07.12ID:???
最初に確保したキャパで収まってんじゃないの?
メモリがレコードに完全に比例するような、非効率的な実装なんかしないだろうし。
735NAME IS NULL
垢版 |
2018/06/15(金) 23:46:44.50ID:???
>>733
どゆことー?
一応自己解決
テンポラリのディスク領域に保存してるみたいだ
windowsの場合いわゆる仮想ディスク、だからメモリが増えてなかった
しかも仮想ディスクはm2のSSDなのでメモリ上に作ってもtempで作っても
速度あんまりかわらんかった

https://www.sqlite.org/tempfiles.html
https://www.sqlite.org/vfs.html

2,3回テストしただけだけど、500Mのテキスト軽く加工してぶっ込むのに
not tempでメモリ上につくって24秒
tempでつくって27秒
736NAME IS NULL
垢版 |
2018/06/16(土) 01:53:50.34ID:???
>>735
微妙に早とちりしてた
PRAGMAで設定しないなら環境変数のTEMP_Pathに"etilqs_*"ってファイルが作られる
あと仮想ディスクじゃなくて仮想ファイルシステムだ
メモリに余裕があればcreate temp tableすることないかも
737NAME IS NULL
垢版 |
2018/06/20(水) 01:47:13.13ID:???
page sizeとcache sizeいくつにしてますか?
page sizeのdefaultが1024から4096に変わったりしてるし
処理するデータによっても変わるし、PC環境でも最適が変わるんだろうけど
なんか基準みたいなのあれば教えてください
fieldが10位なら***みたいな

https://blog.devart.com/increasing-sqlite-performance.html
2016年記事でこんな感じだけど
増やせば増やすほどいいってものでもないんですね
738NAME IS NULL
垢版 |
2018/06/25(月) 21:04:53.90ID:???
>>737
cache sizeは200000くらいにしとけってどこか海外のサイトでみた
基準は書いてるとおり状況によって変わるとしか
739NAME IS NULL
垢版 |
2018/07/07(土) 15:51:37.40ID:r3W4+i36
この手のdb組み合わせて作るシステムってクエリ文コード中に書くの?
それとも外部テキストとか読み込むの?
740NAME IS NULL
垢版 |
2018/07/08(日) 18:59:47.36ID:???
好き好きやろ。
よっぽどでなければ、わざわざ外部テキストにはしないんじゃないのとは思うが。
741NAME IS NULL
垢版 |
2018/07/08(日) 19:47:07.48ID:???
>>739
どういうライブラリやフレームワークを使っているかによる
SQL文を文字列としてプログラム内部に組み込むのは
原始的なライブラリに多い
742NAME IS NULL
垢版 |
2018/07/09(月) 21:11:23.36ID:+WAobpIw
なるへそ
コードに直書きしてるサンプルみてて、改行時のスペース一つみすったらこけるなっておもったが
当然というか、いろいろ方法はあるんやね
743NAME IS NULL
垢版 |
2018/07/10(火) 05:08:16.71ID:???
次のバージョンでついにwindow関数入るのか
もう望むもの無いな
744NAME IS NULL
垢版 |
2018/07/25(水) 14:40:00.43ID:???
>>743
regexpの実装
745NAME IS NULL
垢版 |
2018/07/25(水) 23:00:33.50ID:???
regexpは初めから組み込み側言語の関数を組みこんで使ってくれってスタンスだからな、その方が親和性が取れるから本当はいいんだろう。
たから今更無いだろうよ。
別にそれで不便してないし。
746NAME IS NULL
垢版 |
2018/08/22(水) 15:09:41.10ID:???
出力モードをcolumnにしてselectで出力したのに1行目にカラムが表示されないのは何が原因でしょうか?
747NAME IS NULL
垢版 |
2018/08/22(水) 15:12:17.74ID:???
自己レス
.header onが必要でした
748NAME IS NULL
垢版 |
2018/09/12(水) 06:32:04.96ID:???
window関数って何に使えるのでつか?
749NAME IS NULL
垢版 |
2018/09/12(水) 15:26:15.14ID:???
区間集計
750NAME IS NULL
垢版 |
2018/09/12(水) 20:06:53.29ID:???
区間集計?
751NAME IS NULL
垢版 |
2018/09/13(木) 00:02:16.91ID:???
一般のプログラミング言語みたいに
ループを回してデータを順番に見ながら計算を進めていければいいのに……
と思ったときに使えます。
752NAME IS NULL
垢版 |
2018/09/13(木) 19:41:18.77ID:???
解説ありがとうございます。

GROUP BY でまとめて集計関数使うのではだめなのかなぁとか思ったんですが・・・
まずは調べて勉強します。

有難うございました。
753NAME IS NULL
垢版 |
2018/09/13(木) 21:44:39.64ID:???
GROUP BYと通常の集計でも大抵のことはできますが
自己結合やサブクエリの嵐になってその遅さに悩んだら
ウィンドウ関数を思い出してあげてください
754NAME IS NULL
垢版 |
2018/09/13(木) 21:50:01.28ID:wh5zrV2Z
>>753
遅くなったら遅さと正面から向きあうんや
困難に目をそむけるんやない
755NAME IS NULL
垢版 |
2018/09/13(木) 22:54:43.13ID:???
不可能を可能にする男登場
756NAME IS NULL
垢版 |
2018/09/13(木) 23:30:34.62ID:???
>>752
ちなみに、いまだにMySQLにはウインドウ関数がない。
インデックスとかサマリとかでなんとでもできるからだろ。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。