Function Reference

_SQLite_SQLiteExe

SQLite.exeのコマンドを実行します。

#include <SQLite.au3>
_SQLite_SQLiteExe ( $sDatabaseFile, $sInput, ByRef $sOutput [, $sSQLiteExeFilename = "SQLite3.exe" ] )

 

パラメータ

$sDatabaseFile データベースファイル名
$sInput SQLite.exeのコマンド
$sOutput SQLite.exeからの行出力
$sSQLiteExeFilename [オプション]SQlite.exeのパス

 

返し値

成功: $SQLITE_OKを返します
失敗: $SQLITE_* 定数と比較可能な値を返します
@error: 1 - 新しいデータベースを作成できません
2 - SQLite3.exeがみつかりません
3 - SQLエラー / 不完全なSQL
4 - 入力ファイルを開けません

 

注意

SQLite3.exeのコマンドに関する詳しい情報を得るにはSQLite.exeを実行し、エンターを押して.Helpと入力してください。

SQLite3.exeはSQLiteのウェブサイトで手に入ります。ヘルプファイルのコピーはAutoIt3\Extras\SQLiteディレクトリにあります。

 

関連

None.

 


#include <SQLite.au3>
#include <SQLite.dll.au3>
#include <file.au3>

;ファイル名
Local $sTsvFile = FileGetShortName(_TempFile(@ScriptDir,"~",".tsv"))
Local $sDbFile = FileGetShortName(_TempFile(@ScriptDir,"~",".db"))

;Tsvファイル作成
FileWriteLine($sTsvFile,"a" & @TAB & "b" & @TAB & "c")
FileWriteLine($sTsvFile,"a1" & @TAB & "b1" & @TAB & "c1")
FileWriteLine($sTsvFile,"a2" & @TAB & "b2" & @TAB & "c2")

;インポート(SQLite3.exeを使用)
Local $sIn,$sOut,$i, $sCreate = "CREATE TABLE TblImport (";
for $i = 1 To _StringCountOccurance(FileReadLine($sTsvFile,1),@TAB) + 1
    $sCreate &= "Column_" & $i & ","
Next
$sCreate = StringTrimRight($sCreate,1) & ");"
$sIn  = $sCreate & @CRLF ; テーブル作成
$sIn &= ".separator \t" & @CRLF ; 区切りとして@TABを選択
$sIn &= ".import '" & $sTsvFile & "' TblImport" & @CRLF
_SQLite_SQLiteExe($sDbFile,$sIn,$sOut,-1,true)

If @error = 0 Then
    ;テーブル表示(SQLite3.dllを使用)
    Local $iRows,$iColumns,$aRes
    _SQLite_Startup()
ConsoleWrite("_SQLite_LibVersion=" &_SQLite_LibVersion() & @CRLF)
    _SQLite_Open($sDbFile)
    _SQLite_GetTable2d(-1,"SELECT ROWID,* FROM TblImport;",$aRes,$iRows,$iColumns)
    _SQLite_Display2DResult($aRes) ; コンソール出力
    _SQLite_Close()
    _SQLite_Shutdown()
Else
    If @error = 2 Then
        ConsoleWrite("ERROR: Sqlite3.exe file not found" & @CRLF)
    Else
        ConsoleWrite("ERROR: @error=" & @error & " when calling _SQLite_SQLiteExe" & @CRLF)
    EndIf
EndIf

;一時ファイル削除
FileDelete($sTsvFile)
FileDelete($sDbFile)

;~ 出力:
;~  rowid  Column_1  Column_2  Column_3
;~  1      a         b         c
;~  2      a1        b1        c1
;~  3      a2        b2        c2



Func _StringCountOccurance($sSearchString,$sSubString,$fCaseSense = 0) ; $sSearchString内の$sSubStringの数を返す
    Local $iOccCnt = 1
    Do
        If StringInStr($sSearchString,$sSubString,$fCaseSense,$iOccCnt) > 0 Then
            $iOccCnt += 1
        Else
            ExitLoop
        EndIf
    Until 0
    Return $iOccCnt - 1
EndFunc