Jeśli pójdę mysql shell
i SELECT * FROM users
piszę, dostaję -
+--------+----------------+---------------------------------+----------+-----------+--------------------+--------------------+
| USERID | NAME | EMAILID | PASSWORD | USER_TYPE | CONTACT_ID_FKUSERS | COMPANY_ID_FKUSERS |
+--------+----------------+---------------------------------+----------+-----------+--------------------+--------------------+
| 137 | X | b@cc.com | # | ADMIN | 166 | 110 |
| 138 | Kshitiz | ksharma@aaa.com | asdf | ADMIN | 167 | 111 |
+--------+----------------+---------------------------------+----------+-----------+--------------------+--------------------+
Oracle sqlplus
przedstawia -
USERID NAME EMAILID PASSWORD USER_TYPE CONTACT_ID_FKUSERS COMPANY_ID_FKUSERS
---------- ----- ---------- ---------- ---------- ------------------ ------------------
137 X b@cc.com # ADMIN 166 110
137 X b@cc.com # ADMIN 166 110
Sqlite shell
przedstawia -
137|X|b@cc.com|#|ADMIN|166|110
138|Kshitiz|ksharma@aaa.com|asdf|ADMIN|167|111
- Czy istnieje sposób na upiększenie wyjścia
sqlite shell
? - Czy istnieje alternatywna powłoka lepsza niż domyślna dystrybucja? (Tylko klienci CLI)
Odpowiedzi:
Aby uzyskać wyjście „czytelne dla człowieka”, możesz użyć
column
trybu i włączyć wyjście nagłówka. To da ci coś podobnego dosqlplus
wyniku w twoich przykładach:źródło
echo -e '.mode column\n.headers on\nselect * from sip_foo;\n' | sqlite3 database.sqlite | less -S
jednego wiersza na wiersz bez zawijania słów..width
polecenia, aby poszerzyć kolumny. W przeciwnym razie treść zostanie obcięta wizualnie..separator ROW "\n"
, aby wiersze były oddzielone podziałami wierszy. Moje nie było, a wynik był nieczytelny.~/.sqliterc
pliku, jeśli nie chcesz tego robić ręcznie za każdym razem.Dla tych, którzy są zainteresowani uzyskaniem tych samych wyników, z wyjątkiem uruchamiania sqlite z wiersza poleceń. Odkryłem, że następujące nie działa:
Zamiast tego należy użyć opcji -column i -header z komendą sqlite w następujący sposób:
Za pomocą:
źródło
echo -e ".headers on \n.mode column \n.width 10 20 500 \n select * from MyTable" | sqlite3 <dbfile>
- tzn. Wysłać polecenia do standardowego wejścia.".headers on\n.mode column\n
etcWszystkie odpowiedzi zawierają ustawienia, które można wpisać w konsoli SQLite lub za pomocą interfejsu CLI, ale nikt nie wspomina, że ustawienia te można umieścić w pliku RC, aby uniknąć konieczności ich ciągłego wpisywania. Zapisz to jako
~/.sqliterc
:Uwaga: Dodałem również symbol zastępczy dla wartości null, zamiast domyślnego pustego ciągu.
źródło
Zawsze używam
który wypisuje wyniki zapytania pionowo, podobnie jak
\G
modyfikator MySQL .źródło
Ponieważ nie mogę jeszcze komentować ... Oprócz świetnych odpowiedzi już dostarczonych przez Mat i mlissner, jeśli w każdym razie zawartość kolumny jest obcinana, po podaniu odpowiedniego formatu powłoce sqlite (używając
.mode column
i.headers on
jak wspomniano powyżej ), istnieje również możliwość użycia,.explain
dzięki czemu wyświetlana jest pełna treść kolumny.Jedynym minusem tego polecenia jest to, że nagłówki kolumn kurczą się, przez co nie są one odpowiednio odczytywane, a dane wyjściowe mogą być dość nieuporządkowane (w scenariuszu wizualnym), a następnie można
.explain off
powrócić do poprzedniego formatu i wyświetlić go z bardziej „ludzkim” czytelny ”format jeszcze raz.To podejście może być stosowane w połączeniu z poleceniami formatowania wyjściowego i jako tymczasowe rozwiązanie do przeglądania pełnych danych bazy danych / kolumny, ponieważ przy użyciu
.width
zawsze trzeba podać dokładną liczbę znaków, aby uzyskać pełne wyjście dane kolumny.Aby uzyskać więcej informacji na temat zmiany formatów wyjściowych, szybkie odniesienie do domyślnej dokumentacji CLI:
https://www.sqlite.org/cli.html
źródło
Mój wyglądał jak pomieszany bez podziałów linii. Skomentuj @Boxuan
Naprawiłem również mój problem z tym
źródło
Możesz użyć
.mode tabs
dla wygody.źródło