MySQL Workbenchを使用して結果を表示する場合は、SELECT
1つだけ正確です。\
max@host 10:13:58: ~$ mysql -h db-master.domain.local -uuser -ppw db -e '
> SELECT
> DISTINCT i.filesourceregexp
> FROM db.ImportLogFiles i'
+------------------------------------------------+
| filesourceregexp |
+------------------------------------------------+
| ^[0-9]{8}_1062355673_merge_google_pbn\.csv$ |
| ^[0-9]{8}_8026062435_merge_google_pbn\.csv$ |
| ^[0-9]{8}_1062355673_store_visits_report\.csv$ |
+------------------------------------------------+
max@host 10:14:10: ~$ mysql -h db-master.domain.local -uuser -ppw db -e '
SELECT
DISTINCT i.filesourceregexp
FROM db.ImportLogFiles i' | tail -n +2
^[0-9]{8}_1062355673_merge_google_pbn\\.csv$
^[0-9]{8}_8026062435_merge_google_pbn\\.csv$
^[0-9]{8}_1062355673_store_visits_report\\.csv$
max@host 10:14:19: ~$
次のオプションがありますmy.cnf
。
[client]
host = db-master
user = user
password = pass
default-character-set=utf8
結果をパイピングすると、tail
出力/文字列が変わるのはなぜですか? (二重参照\
)。
答え1
いいえtail
、パイプラインです。
mysql
標準出力が端末装置の場合、ユーザーが使用可能になると、ASCIIボックス型出力形式の表が使用され、次に戻ります。スクリプトパイプや通常のファイルなど、そうでない場合はフォーマットします。
あなたも同じことを見るでしょう。その他次のようにフォーマットされています
mysql... | cat
または
mysql > file; cat file
-r
出力形式に影響を与える/ --raw
、-s
/ --silent
、-B
/ --batch
、-N
// --skip-column-names
、--column-names=0
/ -H
、--html
/ -t
...も参照してください。--table
出力が端末装置に送信されない場合でも、表形式の出力を取得するには、次の-t
オプションを追加します。
mysql -t ... | tail -n +2
ただし、ヘッダー行を削除するには、-N
有無にかかわらずを使用してください-t
。
可能な限りヘッダーなしでデータベースから値を生の状態にするには、次のようにします。
mysql --defaults-extra-file=/some/protected/file/with/credentials \
--batch --raw --skip-column-names -e 'select...' database
それは:
ps
ファイルに資格情報(たとえば、あなたのもの)を渡して、出力my.cnf
にパスワードを公開しないでください--defaults-extra-file
。- 使用一括表形式の出力を防止するモードです(そして実際にバッチ処理中なので他の効果がある可能性があることを認めます)。
--raw
避けるために逃げる。この値には改行文字が含まれていないと仮定します。それ以外の場合、出力は安定して後処理できません。--skip-column-names
ヘッダー行を削除します。