Kiedy przeglądam wynik SELECT
z MySQL Workbench, jest poprawny z jednym pojedynczym \
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: ~$
Mam te opcje w my.cnf
:
[client]
host = db-master
user = user
password = pass
default-character-set=utf8
Dlaczego potokowanie wyniku poprzez tail
zmianę wyniku / ciągu? (zwróć uwagę na podwójne \
).
mysql ... | head
czymysql ... | grep 8
?head
agrep 802
także dwukrotnie * * *max@host 10:50:48: ~$ mysql -V mysql Ver 14.14 Distrib 5.5.55, for debian-linux-gnu (x86_64) using readline 6.3
tail --version
tail (GNU coreutils) 8.23
ale mam ten sam problem zGNU bash, version 4.3.30(1)-release (x86_64-pc-linux-gnu)
iuname -a
wyniki:Linux host 3.16.0-4-amd64 #1 SMP Debian 3.16.43-2+deb8u2 (2017-06-26) x86_64 GNU/Linux
Odpowiedzi:
To nie jest
tail
, to orurowanie.mysql
używa tabelarycznego formatu wyjściowego boksu ASCII, gdy jego standardowe wyjście jest urządzeniem końcowym, gdy jest przeznaczone dla użytkownika, i wraca do formatu skryptowego , gdy nie jest, na przykład gdy jest to potok lub zwykły plik.Zobaczysz ten sam inny format z
lub
Zobacz także
-r
/--raw
,-s
/--silent
,-B
/--batch
,-N
/--skip-column-names
/--column-names=0
,-H
/--html
,-t
/--table
..., które wpływają na format wyjściowy.Jeśli chcesz, aby wynik tabelaryczny był wyświetlany nawet wtedy, gdy dane wyjściowe nie trafią do urządzenia końcowego, dodaj
-t
opcję:Ale jeśli chodzi o usunięcie linii nagłówka, po prostu użyj
-N
, z lub bez-t
.Tutaj, aby uzyskać wartości z bazy danych tak surowe, jak to możliwe i bez nagłówka, użyłbym:
To jest:
ps
, przekazując poświadczenia w pliku zamiast (jak tymy.cnf
) za pomocą--defaults-extra-file
.--raw
aby uniknąć ucieczki . Zakładając, że wartości nie zawierają znaków nowej linii, ponieważ w przeciwnym razie dane wyjściowe nie mogłyby zostać przetworzone w sposób niezawodny.--skip-column-names
aby usunąć linię nagłówka.źródło
-r --column-names=0
rozwiązały mój problem, czołgils
dane wyjściowe są umieszczane w kolumnach, gdy dane wyjściowe trafiają do terminala, ale jest to jedna kolumna podczas zapisywania do potoku lub pliku.