9

データベースからレコードのセットをフェッチするには、単一のコマンドラインを使用する必要があります。私がこれを行う場合:

$ sqlite3 con.db "SELECT name,cell,email FROM contacts"

区切り文字「|」を使用して出力を取得します。出力は次のようになります。

Alison|+12345678|alison@mail.com
Ben|+23456789|ben@mail.com
Steve|+34567890|steve@mail.com

上記で指定されたような単一のコマンドライン形式で)出力フィールドセパレータを「;;;」などの他の何かに変更する方法はありますか?または何か他のものまたはよりユニークなもの。これは、出力に「|」という文字が表示されることがあるためです。レコード内で、問題が発生します。

私の望む結果は次のとおりです。

Alison;;;+12345678;;;alison@mail.com
Ben;;;+23456789;;;ben@mail.com
Steve;;;+34567890;;;steve@mail.com

または、値の中には見ら​​れない可能性のあるその他の一意の区切り文字。

(コマンドはLinuxマシンで実行されます)

ありがとうございました。

4

1 に答える 1

12

-separatorオプションはあなたが望むことをします:

sqlite3 -separator ';;;' con.db "SELECT ..."

値に区切り文字が含まれないことが保証されるように出力をフォーマットする唯一の方法は、すべての文字列を引用符で囲むことです。

sqlite3 con.db "SELECT quote(name), quote(cell), quote(email) FROM contacts"

ただし、これには、SQL構文規則に従って出力を解析する必要があります。

于 2013-01-21T21:59:13.910 に答える