-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;'