SQLite出力の解析

SQLite出力の解析

-lineオプションを使用すると、SQLiteは次のような出力を取得します。

row1_column1 = valueA
row1_column2 = valueB

row2_column1 = valueC
row2_column2 = valueD

したがって、各列の値は1つの行を占め、結果の行は空白行に分割されます。この出力は、以下を含む配列またはリストにインポートする必要があります。

valueA,valueB
valueC,valueD

さらに、数値ではない(!)値は 'と'で囲む必要があります。これを行う簡単な方法はありますか?どんなヒントでもありがとう!

ベストアンサー1

次のawkスクリプトは、文字列の引用符をエスケープするなど、必要な操作を実行します。

BEGIN   { RS="\n\n"
          FS="\n"
        }

function field(s)
{
        sub(/^[^=]*= /, "", s)
        if (match(s, /^[-][0-9]+$/) == 0) {
                gsub(/'/, "''", s)
                s = "'" s "'"
        }
        return s
}

        { print field($1) "," field($2) }

(数値正規表現は浮動小数点値を処理しません.)


-lineただし、最も簡単な方法は、SQLiteに組み込まれているSQL参照を使用しないことです。

sqlite3 -separator , -list my.db 'select quote(col1),quote(col2) from mytab;'

おすすめ記事