詳細とオプション
例題
例
スコープ
オプション
"Distinct"
"FetchSize"
"GetAsStrings"
"MaxFieldSize"
"MaxRows"
"ShowColumnHeadings"
"SortingColumns"
"ColumnSymbols"
アプリケーション
関連項目
テクニカルノート
関連するガイド
DatabaseLink`
DatabaseLink`
SQLSelect
詳細とオプション
- SQLSelectを使うためには,まずNeeds["DatabaseLink`"]を使って DatabaseLink をロードする必要がある.
- 使用可能なオプション
-
"Distinct" False 重複しない結果だけを返すかどうか "FetchSize" Automatic JDBCドライバへの結果セットの大きさの提示 "GetAsStrings" False 結果を文字列として返すかどうか "MaxFieldSize" Automatic 可変長の列のタイプのバイト制限 "MaxRows" Automatic 返される最大行数 "ShowColumnHeadings" False 結果とともに列見出しを返すかどうか "SortingColumns" None データのソート方法 "ColumnSymbols" None 結果に関連付けるシンボル "Timeout" $SQLTimeout クエリのタイムアウト
例題
すべて開く すべて閉じる例 (1)
Needs["DatabaseLink`"]このセクションの例を実際に試してみて,記載の通りに動作しなかった場合は,データベースの例の使用で述べているようにDatabaseLink`DatabaseExamples`パッケージを使ってデータベースをインストールするか,もとの状態に戻す必要がある可能性がある.
conn = OpenSQLConnection["publisher"];SQLSelect[conn, "ROYSCHED"]SQLSelect[conn, "ROYSCHED", {"TITLE_ID", "ROYALTY"}]SQLSelect[conn, {"TITLES", "ROYSCHED"}, {{"TITLES", "TITLE"}, {"TITLES", "TITLE_ID"}, {"ROYSCHED", "ROYALTY"}}, SQLColumn[{"TITLES", "TITLE_ID"}] == SQLColumn[{"ROYSCHED", "TITLE_ID"}]]//Short[#, 15]&SQLSelect[conn, "ROYSCHED", {"TITLE_ID", "ROYALTY"}, .10 < SQLColumn["ROYALTY"] < .15]SQLSelect[conn, "ROYSCHED", {"TITLE_ID", "ROYALTY"}, SQLStringMatchQ[SQLColumn["TITLE_ID"], "C%"]]SQLSelect[conn, "ROYSCHED", {"TITLE_ID", "ROYALTY"}, SQLStringMatchQ[SQLColumn["TITLE_ID"], "_S%"]]SQLSelect[conn, "ROYSCHED", {"TITLE_ID", "ROYALTY"}, SQLMemberQ[{.14, .16}, SQLColumn["ROYALTY"]]]CloseSQLConnection[conn];スコープ (1)
Needs["DatabaseLink`"]conn = OpenSQLConnection["publisher"];SQLSelect[conn, "ROYSCHED", {"TITLE_ID", "ROYALTY"}, .13 > SQLColumn["ROYALTY"] > .10]SQLSelect[conn, "ROYSCHED", {"TITLE_ID", "ROYALTY"}, SQLColumn["ROYALTY"] == .12]SQLSelect[conn, "ROYSCHED", {"TITLE_ID", "ROYALTY"}, SQLColumn["ROYALTY"] != .12]SQLSelect[conn, "ROYSCHED", {"TITLE_ID", "ROYALTY"}, SQLColumn["ROYALTY"] > .12]SQLSelect[conn, "ROYSCHED", {"TITLE_ID", "ROYALTY"}, SQLColumn["ROYALTY"] < .12]SQLSelect[conn, "ROYSCHED", {"TITLE_ID", "ROYALTY"}, SQLColumn["ROYALTY"] ≥ .12]SQLSelect[conn, "ROYSCHED", {"TITLE_ID", "ROYALTY"}, SQLColumn["ROYALTY"] ≤ .12]SQLSelect[conn, "ROYSCHED", {"TITLE_ID", "LORANGE", "ROYALTY"}, SQLColumn["ROYALTY"] == .12 && SQLColumn["LORANGE"] > 1000]SQLSelect[conn, "ROYSCHED", {"TITLE_ID", "ROYALTY"}, SQLColumn["ROYALTY"] == .12 || SQLColumn["ROYALTY"] == .14]CloseSQLConnection[conn];オプション (8)
"Distinct" (1)
"FetchSize" (1)
Needs["JLink`"];
Needs["DatabaseLink`"];"FetchSize"オプションは,データベースへの各アクセスの際に取り出す行数をJDBCドライバに提案する.パラメータを増やすと,使用メモリ量が増え,代りにクエリの実行に必要なネットワークトラフィック量が減る:
AddToClassPath["/Users/me/Documents/DatabaseLink/drivers"];
connSpec = {JDBC["oracle.jdbc.driver.OracleDriver", "jdbc:oracle:thin:@server.domain.wolfram.com:1521:xe"], Username -> "GUEST", Password -> "GUEST"};conn = OpenSQLConnection@@connSpecjavaMem[] := Module[{rt},
LoadJavaClass["java.lang.Runtime"];
rt = Runtime`getRuntime[];
rt@totalMemory[](* allocated; some is free for jvm use *)
];
memReport[] := TableForm[List@{MemoryInUse[], javaMem[], MemoryInUse[] + javaMem[]}, TableHeadings -> {None, {"Kernel", "Java", "Total"}}]memReport[]AbsoluteTiming[
ByteCount@SQLSelect[conn, "test_tab", "MaxRows" -> 20000, "FetchSize" -> 5]
]memReport[]CloseSQLConnection[conn];
ReinstallJava[];
conn = OpenSQLConnection@@connSpec;
memReport[]AbsoluteTiming[
ByteCount@SQLExecute[conn, "SELECT * FROM test_tab", "MaxRows" -> 20000, "FetchSize" -> 10000]
]memReport[]CloseSQLConnection[conn];"GetAsStrings" (1)
"MaxFieldSize" (1)
Needs["DatabaseLink`"]可変長の列のタイプによっては,"MaxFieldSize"オプションを使ってフィールドに返されるバイト数を制限することができる:
conn = OpenSQLConnection[JDBC["Derby(Embedded)", FileNameJoin[{$TemporaryDirectory, "scratch"}]], "Properties" -> {"create" -> "true"}]SQLCreateTable[conn, SQLTable["STRINGS"], {SQLColumn["string", "DataTypeName" -> "VARCHAR(512)"]}]SQLInsert[conn, SQLTable["STRINGS"], {SQLColumn["string"]}, {StringTake[ExampleData[{"Text", "AeneidEnglish"}], 512]}
]res = SQLSelect[conn, "STRINGS", "string", "MaxFieldSize" -> 64]StringLength@res[[1, 1]]SQLDropTable[conn, "STRINGS"]CloseSQLConnection[conn];"MaxRows" (1)
"ShowColumnHeadings" (1)
Needs["DatabaseLink`"]conn = OpenSQLConnection["publisher"];SQLSelect[conn, "ROYSCHED", {"TITLE_ID", "ROYALTY"}, "ShowColumnHeadings" -> True]//Take[#, 10]&//TableFormCloseSQLConnection[conn];"SortingColumns" (1)
Needs["DatabaseLink`"]conn = OpenSQLConnection["publisher"];SQLSelect[conn, "ROYSCHED", {"TITLE_ID", "ROYALTY"},
"SortingColumns" -> {
SQLColumn["ROYALTY"] -> "Ascending",
SQLColumn["TITLE_ID"] -> "Ascending"
}
]CloseSQLConnection[conn];"ColumnSymbols" (1)
Needs["DatabaseLink`"]conn = OpenSQLConnection["demo"];Clear[entries, values, names];SQLSelect[conn, "SAMPLETABLE1", {"ENTRY", "VALUE", "NAME"}, "ColumnSymbols" -> {entries, values, names}];entriesvaluesnamesClear[entries, values, names];SQLSelect[conn, "SAMPLETABLE1", {"ENTRY", "VALUE", "NAME"}, "ColumnSymbols" -> Automatic];Names["Global`col*"]Global`col1Global`col2Global`col3列の名前と結果に作用する関数を与える.列見出しが要求されていない場合は,関数の最初の引数はNullとなる:
SQLSelect[conn, "SAMPLETABLE1", {"ENTRY", "VALUE"}, "ShowColumnHeadings" -> True,
"ColumnSymbols" -> Function[{cols, res},
With[{syms = Symbol["SAMPLETABLE1" <> #]& /@ cols},
Evaluate[syms] = Transpose[res]
]
]
]SAMPLETABLE1ENTRYSAMPLETABLE1VALUEClear@values;
SQLSelect[conn, "SAMPLETABLE1", "VALUE", "ColumnSymbols" -> ((values = Flatten[#2])&)];valuesCloseSQLConnection[conn];アプリケーション (1)
Needs["DatabaseLink`"]conn = OpenSQLConnection["publisher"];data = SQLSelect[conn, "ROYSCHED", {"TITLE_ID", "ROYALTY"}]Histogram[data[[All, -1]]]CloseSQLConnection[conn];