X



トップページDB@2ch掲示板
1002コメント312KB
SQLite Part.10
■ このスレッドは過去ログ倉庫に格納されています
0241NAME IS NULL
垢版 |
2013/10/05(土) 14:10:44.56ID:???
>>240
insert,updateする前にチェックして入れろ
0242NAME IS NULL
垢版 |
2013/10/06(日) 12:12:41.85ID:???
>>240
そのカラムは、文字や数字を混在してもいいものであるような設計しているんでしょ?
だったら、取得後、プログラムで制御しなさい。

そうでなければ、型識別用のカラムを用意するとか検討すれば良い。
0243NAME IS NULL
垢版 |
2013/10/06(日) 17:49:56.19ID:???
>>240
select typeof(1), typeof(0.0), typeof('string'), typeof(null);
0244NAME IS NULL
垢版 |
2013/10/14(月) 00:53:56.36ID:???
ユニコードのCSVもしくはmdbかaccdbで書き出せるフリーソフトってありますか?
0245NAME IS NULL
垢版 |
2013/10/14(月) 12:29:43.38ID:???
探すより作った方が早いかもよ
0246NAME IS NULL
垢版 |
2013/10/14(月) 22:29:07.20ID:???
やっぱり作ったほうが手っ取り早いですか…
ありがとうございました。
0248NAME IS NULL
垢版 |
2013/10/22(火) 23:54:28.55ID:???
>>247
unlikely(X) 関数追加
Bool型の値Xが6.25%という低確率でしかtrueにならないことを最適化のためにクエリに埋め込んでコアに教える…か

6.25%という数値にはどんな深遠な意味があるのだろうか?
任意の確率を指定出来るlikelihood関数も追加されたとはいえ。
0249NAME IS NULL
垢版 |
2013/10/28(月) 10:12:41.83ID:BsA/BDpa
テーブル「table1」が存在していたらその内容を「table2」へコピーする

みたいなSQLはどうやって書けばいいですか?
0250NAME IS NULL
垢版 |
2013/10/28(月) 11:27:23.01ID:???
いきなりコピーして、エラー処理をちゃんとする

テーブルの存在をチェックする構文があったとしても、
それやっちゃうとコピー時にエラーが発生するケースのテストが
難しくなるのでよろしくない
0251NAME IS NULL
垢版 |
2013/10/29(火) 08:09:54.97ID:???
>>249
insert 〜 select 〜
とか
create table 〜 as select 〜
0252NAME IS NULL
垢版 |
2013/10/29(火) 08:11:26.31ID:???
あぁ勘違いしたスマン無視して下さい
mysqlみたいなif exist的なことか
0253NAME IS NULL
垢版 |
2013/10/29(火) 10:18:26.45ID:???
スキーマのコピーもいるべ
0254NAME IS NULL
垢版 |
2013/10/29(火) 11:48:05.47ID:???
質問です
SQLite 3.7で作成したデータベースを
3.3で読んだり書き込んだりすることは通常問題なくできるものでしょうか?
0255NAME IS NULL
垢版 |
2013/10/29(火) 12:09:37.58ID:???
3系は同じはず。
変わったら4になるんじゃないかな。
0256NAME IS NULL
垢版 |
2013/11/01(金) 09:20:22.30ID:???
>>255
無事解決できました ありがとう
0257NAME IS NULL
垢版 |
2013/11/04(月) 13:19:03.79ID:???
初歩的な質問です
コマンドラインで複数行での入力中に、キャンセルする方法ってあるのでしょうか?
0258NAME IS NULL
垢版 |
2013/11/04(月) 13:27:47.35ID:???
俺はいつも適当な文字打ってエラー出して終了させる
0259NAME IS NULL
垢版 |
2013/11/04(月) 13:49:22.94ID:???
^Dで丸ごと終わらせる、、とか
0261NAME IS NULL
垢版 |
2013/11/08(金) 01:29:40.01ID:???
sqliteでcteとwindow関数使えたらもう死んでもいい
のらないかな
0262NAME IS NULL
垢版 |
2013/11/12(火) 13:02:35.25ID:???
半角の濁点付き文字を検索するにはどうすればいいのでしょう?

like ”%[だダ(ダ)]%”
こんな感じでタ+”を一文字として扱いたいんですが、何で囲めばいいんでしょう。
0263NAME IS NULL
垢版 |
2013/11/12(火) 14:33:46.66ID:???
正規表現使えるのか
文字列入れるのは無理じゃね
[だダ]|ダ
とか、、
0264NAME IS NULL
垢版 |
2013/11/12(火) 22:23:16.26ID:???
プログラムがごちゃごちゃして後々面倒くさいことになりそうなので妥協してしまった、、、
0265NAME IS NULL
垢版 |
2013/11/15(金) 03:36:20.07ID:???
SQLigtの初心者で、まだネットで調べながら作ってるレベルです。
で質問なんですが
table1
id|year|month|day|・・・
というテーブルと
table2
id|year|month|day|・・・
の二つのテーブルがあるのですが
yearとmonthとdayが同一である時のみ、色々処理をしたいのですが
SQL文をどう書いたらよいかわかりません。
初心者の質問ですみませんが、ご教示願います。
0266NAME IS NULL
垢版 |
2013/11/15(金) 05:07:16.29ID:???
お前はsqliteの初心者じゃなくて
データベースの初心者だな
0267265
垢版 |
2013/11/15(金) 08:32:56.61ID:???
はい、現在androidアプリの製作をしてまして
DBを使うことになりSQLightを触り始めた感じです。
0268NAME IS NULL
垢版 |
2013/11/15(金) 20:22:32.17ID:???
SQLの初心者向けサイトや本は腐るほどあるだろ
なぜそれを見ない?
0269NAME IS NULL
垢版 |
2013/11/16(土) 02:11:06.63ID:???
sqliteどうのではなく、基本的なsqlのお勉強が必要だね
0270NAME IS NULL
垢版 |
2013/11/16(土) 08:34:46.59ID:???
> SQLigtの初心者
> SQLightを触り始めた

すれ違いだな
0271NAME IS NULL
垢版 |
2013/11/24(日) 17:04:52.87ID:fFOXkp70
作成済みのテーブル my_table にて
カラム column_a の存在確認のみやりたいです。
(ALTER TABLE IF NOT EXITS ... とかではなく、存在確認のみです)
(実際には、「存在しないこと」を確認したいです)

色々とググる中で以下の2つの方法が見つかっていますが
どちらもスマートではないなぁと感じています。

 ・PRAGMA index_info(my_table) でテーブル情報を取得して、
  その中に column_a が存在しないことをループを廻して全件チェックする

 ・SELECT column_a FROM my_table で例外が発生したら、存在しないとする

もっと直接的にカラムの存在確認はできないのでしょうか?
方法がありましたらご教授いただきたく、よろしくお願いします。
0272NAME IS NULL
垢版 |
2013/11/24(日) 20:48:48.55ID:???
千葉県松戸市六高台2-78-3
0273NAME IS NULL
垢版 |
2013/11/24(日) 22:14:44.64ID:???
>>271
select sql from sqlite_master where type='table' and name='my_table';
で、定義とってきて、中身見ればいいんじゃね?
0274NAME IS NULL
垢版 |
2013/11/25(月) 21:16:23.62ID:falVPg2c
重複している行の削除をしたいのですが、
どう書けばよいのか思いつきません。
残すのは_IDが一番若いものにしたいです。

_ID  |  Name  |  Data
−−−−−−−−−−−−−−
0   |  AAA   |  ABC
1   |  AAA   |  DCD
2   |  BBB   |  XXX
3   |  AAA   |  YYY
4   |  BBB   |  ZZZ

の場合は、

0   |  AAA   |  ABC
2   |  BBB   |  XXX

を残して、それ以外のレコードを削除したいです。
よろしくお願いいたします。
0276274
垢版 |
2013/11/25(月) 22:56:51.79ID:???
>>275
ありがとうございます。
スレ違いでしたか、大変失礼いたしました。

SQLを自分で書くのがSQLiteが初めてでしたので
どこまでがSQL全般の話なのか理解せずに
使っておりました。もっと勉強いたします。
0278NAME IS NULL
垢版 |
2013/12/02(月) 10:24:15.36ID:g8Y2dRce
sqliteに3DCGのデータを埋め込みたいのですが…
0279NAME IS NULL
垢版 |
2013/12/02(月) 16:09:08.39ID:???
バイナリデータならBLOBでも使うヨロシ
0280NAME IS NULL
垢版 |
2013/12/02(月) 17:53:36.51ID:???
base64エンコードして文字列型でもいい
0282NAME IS NULL
垢版 |
2013/12/06(金) 09:00:08.26ID:???
VBAからデータ追加するのにRecordsetでAddNewで入れるのと
InsertIntoで入れるのとどっちが速い?
0283NAME IS NULL
垢版 |
2013/12/06(金) 11:34:30.68ID:???
自分で試せや、ボケが
0284NAME IS NULL
垢版 |
2013/12/07(土) 00:56:02.56ID:???
C#でクラスからクエリを自動作成してくれるライブラリとかってないですかね
0287NAME IS NULL
垢版 |
2013/12/12(木) 16:07:36.18ID:???
ODBCドライバ経由でプリコンパイルって使える?
0288NAME IS NULL
垢版 |
2013/12/12(木) 19:10:28.35ID:???
ODBCドライバは知らないけど、少なくともSQLiteに「プリコンパイル」なる機能は無いよ。
0291NAME IS NULL
垢版 |
2013/12/14(土) 17:07:26.68ID:???
ttp://d.hatena.ne.jp/mftech/20100929/1285754844

>/// <summary>
>/// SQL文を実行し、検索結果の第1行第1列を返す
>/// </summary>

> public Object ExecuteScalar(string sql, SQLiteParameter[] parameters)

は、原文
ttp://zhoufoxcn.blog.51cto.com/792419/292670
では

> public Object ExecuteScalar(string sql, IList<SQLiteParameter> parameters)
> {
> using (SQLiteConnection connection = new SQLiteConnection(connectionString))
> {
> using (SQLiteCommand command = new SQLiteCommand(sql, connection))
> {
> if (!(parameters == null || parameters.Count == 0))
> {
> foreach (SQLiteParameter parameter in parameters)
> {
> command.Parameters.Add(parameter);
> }
> }
> return command.ExecuteScalar();
> }
> }
> }
で、
>(注:上面的代&#30721;在2011-07-15日代&#30721;重新&#32534;&#36753;了,参数由SQLiteParameter[] parameters&#21464;&#20026;IList<SQLiteParameter> >parameters,使用范&#22260;更广)

とのこと
0292NAME IS NULL
垢版 |
2013/12/15(日) 03:42:50.78ID:???
何言ってるか分からない
0293NAME IS NULL
垢版 |
2014/01/08(水) 08:46:17.46ID:???
EnumerableRowCollection<DataRow> query =
from row in contacts.AsEnumerable()
where IsContainArr(row[0].ToString(), fig)
select row;

bool IsContainArr(string s, string[] arr)
{
foreach (var a in arr)
{
if (!s.Contains(a)) return false;
}
return true;
}

って、メソッドで用意されてないんかな
0295NAME IS NULL
垢版 |
2014/01/11(土) 15:42:52.85ID:???
いつもmysqlを使っていて、
sqliteを勉強中なのですが。

MySQLの以下のクエリについてなんですが、

INSERT INTO
table
(a, b)
VALUES
(aa, 1), (bb, 2), (cc, 3)
ON DUPLICATE KEY UPDATE b=b+VALUES(b)

同一行が存在しないときは、新しい行をinsert。
存在するときは、既存のbに新しい数値を足した値を入れる。
なお、複数の行を一括で処理したい。

以上の条件で、SQLiteでは同じことをするクエリは書けませんか?
0296NAME IS NULL
垢版 |
2014/01/11(土) 19:25:15.43ID:???
一括で同じことをするクエリはないみたいですが、
一応自己解決しました。では。
0297NAME IS NULL
垢版 |
2014/01/13(月) 15:41:14.71ID:???
自分のことしか考えてない・・・
0298NAME IS NULL
垢版 |
2014/01/13(月) 23:03:34.81ID:???
だってゆとりだもの。
0299NAME IS NULL
垢版 |
2014/01/13(月) 23:09:14.82ID:???
義務教育はぜーんぶ糞
0300NAME IS NULL
垢版 |
2014/01/15(水) 22:19:08.42ID:???
/// <summary>
/// NonQueryList
/// </summary>
/// <param name="sql"></param>
/// <param name="param_arr"></param>
/// <param name="list"></param>
/// <returns></returns>
public static int NonQueryList(string sql, string[] param_arr, List<string[]> list)
{
int records = 0;
try
{
List<SQLiteParameter> parameters = new List<SQLiteParameter>();
using (SQLiteConnection connection = new SQLiteConnection("Data Source=" + DB_FILE))
{
connection.Open();
using (DbTransaction transaction = connection.BeginTransaction())
{
using (SQLiteCommand command = new SQLiteCommand(connection))
{
foreach (string[] line in list)
{
command.CommandText = sql;
for (var i = 0; i < param_arr.Length; i++)
{
command.Parameters.Add(new SQLiteParameter(param_arr[i], line[i] ?? ""));
}

records += command.ExecuteNonQuery();
}
}
transaction.Commit();
}
}
}
catch (System.Exception ex)
{
Console.WriteLine(ex.Message);
return 0;
}
return records;
}
0301NAME IS NULL
垢版 |
2014/01/18(土) 00:46:11.01ID:3tf2egSa
カラムにDateTime型を指定出来るけど
実際は、日付入れるとRealかIntegerかTextが入るよね
エポック秒使うとして最初からInteger指定しとくのと何が変わるの?
0303NAME IS NULL
垢版 |
2014/01/29(水) 22:35:04.57ID:gj57qZ83
株価のDBを1ファイルに収めて使ってきたけど1GB超えてるし
これを銘柄数だけファイルを作っても良いのではと思うようになった

db.open&closeするオーバーヘッドって結構大きいのかな?
分ける事でカラムとIndexを減らせるので1ファイルで見ると速度も上がって容量も減るけど
open&closeが4000回近く増えるから、ここで遅くなると意味ないし

他のプログラム見てると結構分けてるんだよね、4000個も無いけど
どう思いますか?
0304NAME IS NULL
垢版 |
2014/01/29(水) 23:25:07.25ID:???
コネクションプールで良いみたい、ではでは
0305NAME IS NULL
垢版 |
2014/01/30(木) 12:31:35.75ID:???
同じでDBを再利用するならそれ
串刺しはアタッチ
0306NAME IS NULL
垢版 |
2014/02/02(日) 00:41:43.45ID:???
データベースを勉強してみようと思ってます。
少し変な質問ですが、SQLiteはサーバーを必要とせず、
ローカル環境で導入できるということですが、
それならば、MS-Accessと、どう違うのか、いや全然違うのは判るんだけど。
二つを対比して、特徴があれば教えてください。
0307NAME IS NULL
垢版 |
2014/02/02(日) 07:34:40.62ID:???
まず病院へいきましょうね
0308NAME IS NULL
垢版 |
2014/02/02(日) 09:13:21.60ID:???
>>306
> 少し変な質問ですが、SQLiteはサーバーを必要とせず、

と、言う仕組みは同じだよ。
個々の機能とか、Access は DBMS 以外の機能 (フォームとか) があるからそういうところは違うけど、漫然と特徴とか言われても説明しづらい。
0309NAME IS NULL
垢版 |
2014/02/02(日) 12:26:30.19ID:???
>>306
SQLiteは、一般的なSQLを扱うRDB入門(ex.情報処理試験)としては、まったく向いていない。

結局のところ、サーバ型のDBMSから始めるのが、仕組みを理解するには一番良かったりする。
0310NAME IS NULL
垢版 |
2014/02/02(日) 12:34:09.34ID:???
Access は、
データベースエンジンACE + VBA + フォーム + レポート
0311NAME IS NULL
垢版 |
2014/02/02(日) 23:51:02.22ID:???
データベースの何を知りたいんだ
sqliteは少なくともデータベースを知ってる人用のプロダクトだと思うぞ

巷のデータベース入門書でも買って、
ポスグレでもMariaDBでもfirebirdでもいいから普通のRDB入れなさい。
全部ローカルで入れて使えるんだから。
0312NAME IS NULL
垢版 |
2014/02/02(日) 23:53:29.45ID:???
ただの釣りだと思います
0313NAME IS NULL
垢版 |
2014/02/03(月) 00:28:49.09ID:???
いろいろとありがとうございます。
西沢直木さんの本でコマンドを打ってみたりしました。
SQLは初めてですが、いまのところsqliteが扱いやすい(他と実際比べたわけでないけど)
と思いました。

Accessを比較にだしたのは個人的にローカルで株価などの経済データを扱いたいと思ったからです。
特にサーバを必要と感じなかったので、MySQLなどは今のところ考えていません。
ちゃんと説明せず申し訳ないです。概要はわかりましたありがとうございました。
0314NAME IS NULL
垢版 |
2014/02/03(月) 08:27:55.69ID:???
今は中学生が株やるのか
0315NAME IS NULL
垢版 |
2014/02/03(月) 23:57:55.04ID:???
これは、煽ってるんだよな。おそらく。
0316NAME IS NULL
垢版 |
2014/02/04(火) 07:43:15.68ID:???
Current Status

Version 3.8.3 of SQLite is recommended for all new development.
Upgrading from versions 3.7.17, 3.8.0.2, 3.8.1, and 3.8.2 is optional.
Upgrading from all other prior versions of SQLite is recommended.
0317NAME IS NULL
垢版 |
2014/02/04(火) 10:37:12.45ID:???
おい、CTE載ったじゃねーかよ。recursiveも使えるし
素晴らしい!長年の希望がひとつかなった。
valuesも単独で使えるようになってるし、GJ

あとはwindow関数・・・
0318NAME IS NULL
垢版 |
2014/02/04(火) 11:05:12.45ID:???
SQLite3のデータファイルと言うのは、それ自体にバージョンの違いが有るのでしょうか?
それとも個々が持ってるDLLで決まるのですか?
0321NAME IS NULL
垢版 |
2014/02/04(火) 12:50:03.65ID:???
フォーマットが変わるまで何もしなくて大丈夫なんですね
変わればDumpする

ファイルを触るプログラム側にバージョンの違いが有り
Access2013でmdbファイル操作するようなイメージなのかな
0324NAME IS NULL
垢版 |
2014/02/04(火) 17:37:07.20ID:???
The VALUES clause

The phrase "VALUES(expr-list)" means the same thing as "SELECT expr-list".
The phrase "VALUES(expr-list-1),...,(expr-list-N)" means the same thing
as "SELECT expr-list-1 UNION ALL ... UNION ALL SELECT expr-list-N".
There is no advantage to using one form over the other.
Both forms yield the same result and both forms use the same amount of memory and processing time.

There are some restrictions on the use of a VALUES clause that are not shown on the syntax diagrams:

A VALUES clause cannot be followed by ORDER BY or LIMIT.
A VALUES clause cannot be used together with a WITH clause in a simple SELECT.

SQLite Query Language: SELECT
http://sqlite.org/lang_select.html#values
0325NAME IS NULL
垢版 |
2014/02/06(木) 00:39:27.25ID:???
>>314
SQL自体は他のプログラム言語より易しいから、やろうと思えば中学でも習得できるだろ。
株は知らんが。
0326NAME IS NULL
垢版 |
2014/02/07(金) 11:35:14.49ID:???
>>303
実際やってみた
1個のファイル vs 3915個に分割したファイル

俺の予想では分割したほうが遅いだろうと思ってたけど、結果は逆だった
ただし1ファイル(1テーブル)に対して発行する程度の話

InnerJoinしてサブクエリ出すような場合、分割してると出来ないのだが
GoLangでAttachする方法がわかんない、まぁ必須では無いので良いけどね
0327NAME IS NULL
垢版 |
2014/02/07(金) 11:46:47.08ID:???
間違った、1個ファイルの方が全然速い
0328NAME IS NULL
垢版 |
2014/02/07(金) 21:25:06.60ID:???
実際にやってみるのはいいことだけど、結果は当たり前だわな
データファイルがでかくなってどうしようもなくなったら DBMS の機能でファイル分割するべき
0330NAME IS NULL
垢版 |
2014/02/14(金) 16:38:14.53ID:???
質問させて貰いたいんだけど、
SQLiteってファイルで保存されるけど、
それをそのまま他のSQLite入ってるコンピューターに送っても同じように挙動するの?
それともCSV形式とかに直したりして送らないといけない?
0331NAME IS NULL
垢版 |
2014/02/14(金) 17:18:34.60ID:???
同じバージョンで操作するなら同じだよ
0332NAME IS NULL
垢版 |
2014/02/14(金) 17:22:20.18ID:???
SQLite3どうしなら大丈夫って事だよね?
勿論、3.1.1と3.11.3とかバージョンが大きく違えば
仕様が変わったりでバグがあるかもしれないけれども

ありがと
0334NAME IS NULL
垢版 |
2014/02/14(金) 20:35:54.23ID:???
centOS6使ってるんですが、TKSQLiteってどうやってインストールするんですか?
http://reddog.s35.xrea.com/wiki/TkSQLite.html#download
からTcl scriptとStandalone executable binary (sqlite 2.8.17 / 3.7.14)の
両方をダウンロードしたんですが、後者の方はTKSQLiteってのをダブルクリックしても動きません
前者は、tksqlite.tclってファイルが出来ましたが、中身はシェルスクリプトのようです
$bash tksqlite.tcl
とすればいいのでしょうか?
0335NAME IS NULL
垢版 |
2014/02/14(金) 22:43:56.33ID:???
そのTKSQLiteとやらの作者に聞けばいいと思うよ。

# 「Tcl script」なる物をダウンロードしたのに
# >中身はシェルスクリプトのようです
# なんて言ってるレベルじゃあ、先にLinuxを勉強した方が良いと思うけど。
0336NAME IS NULL
垢版 |
2014/02/15(土) 03:47:59.50ID:???
>>334
後者だけど、URLにlinuxと入ってるのを落としてるよな?
win32とかosxとかの奴を落としてたら動かないのは当然だからな、対応OSが違う

それで動かなきゃ前者という話になるんだが
そのレベルだとTkSQLiteがTcl/Tkで出来ていると言ってもわからなさそうだな
後者で動かないなら素直に諦めとけ
0337NAME IS NULL
垢版 |
2014/02/15(土) 19:02:59.81ID:???
SQLiteにBOM入れたらどうなるの?
■ このスレッドは過去ログ倉庫に格納されています

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