データの挿入
SQLInsertはデータベースにデータを挿入する.これは,「生SQLを使ったデータの挿入」に記載のように,SQLコマンドをそのまま使ってもできる.
このチュートリアルの例を実際に試してみて,記載の通りに動作しなかった場合は,「データベースの例の使用」で述べているように"DatabaseLink`DatabaseExamples`"パッケージを使ってデータベースをもとの状態に戻す必要があるかもしれない.
SQLInsertの結果は,クエリの影響を受ける行数を指定する整数となる.1度に1行しか挿入できないため,1度だけ挿入する場合はこの整数は1になる.SQLInsertはバッチ挿入もサポートしている.これについては「パフォーマンス:バッチ操作」で例示する.
| SQLInsert[conn,table,{columns},{values},opts] | データベースにデータを挿入する |
| SQLInsert[conn,table,{columns},{{values}},opts] | データベースにデータをバッチ挿入する |
データを挿入する例を以下に示す.DatabaseLink をロードし,demoデータベースに接続する.
Needs["DatabaseLink`"];
conn = OpenSQLConnection["demo"];新しい表TESTを作る.このコマンドの詳細は「生SQLを使った表の作成」に記載されている.
SQLCreateTable[conn, "TEST",
{
SQLColumn["COL1", "DataTypeName" -> "INTEGER"],
SQLColumn["COL2", "DataTypeName" -> "DOUBLE"]
}]SQLInsertを使ってこの表にデータを挿入する.
SQLInsert[conn, "TEST", {"COL1", "COL2"}, {10, 10.5}]SQLSelectでデータがデータベースに保管されていることを確認する.
SQLSelect[conn, "TEST"]最後にバッチ挿入を実行する.変更された行数のリストが得られる.
SQLInsert[conn, "TEST", {"COL1", "COL2"}, {{10, 10.5}, {20, 55.1}}]SQLSelectを使うと,現在表には3行存在することが分かる.
SQLSelect[conn, "TEST"]SQLInsertには3つのオプションが使える.
オプション名
|
デフォルト値
| |
| "Timeout" | $SQLTimeout | クエリのタイムアウトを設定する |
| "BatchSize" | 1000 | この値の数のレコードの挿入をバッチ処理する |
| "JavaBatching" | True | Wolfram言語層の代りにJava層でパラメータのバッチ処理を行う |
SQLInsertのオプション
オプション"Timeout"を使うと,実行に時間がかかりすぎるクエリをキャンセルすることができる.
SQLDropTable[conn, "TEST"];
CloseSQLConnection[conn];Wolfram言語の式がデータベースに保管されている型にどのようにマップされるかについては「データ型マッピング」に詳しく記載されている.