Я хочу, чтобы один из моих нескольких операторов SELECT не печатал заголовки столбцов, а только выбранные записи. Возможно ли это в Cassandra 3.0?
Я попробовал следующее, но он возвращает имя столбца:
cqlsh -e "select count(1) from system_schema.keyspaces where keyspace_name='test'";
count
-------
1
MySQL имеет такие опции, как -s -N, чтобы подавить то же самое.
Попробуйте этот вариант в качестве обходного пути:
# cqlsh -e "select count(1) from system_schema.keyspaces where keyspace_name='test'" | tail -n +4
0
(1 rows)
@Dexter, для выбора записей, почему ты не можешь просто использовать SELECT * FROM system_schema.keyspaces where keyspace_name='test';
?
Чего вы пытаетесь добиться здесь, т.е. конечного результата?
Если вы просто хотите подсчитать количество записей, вы можете просто использовать DataStax Bulk Loader для выполнения операции подсчета.
Использованная литература:
./dsbulk count -k system_schema -t keyspaces
В качестве альтернативы вы можете использовать dsbulk unload -query <...>
для выборочной выгрузки записей на основе переданного вами запроса.
В cqlsh
нет встроенной опции, которая позволила бы вам подавить заголовок вывода из CQL SELECT
.
Лучше всего использовать сценарии оболочки для анализа вывода. Существует несколько доступных утилит Linux, которые вы можете использовать в зависимости от желаемого результата. Вот лишь несколько примеров из длинного списка возможностей:
ПРИМЕР 1. Чтобы распечатать первую строку результатов (4-я строка вывода cqlsh), вы можете использовать утилиту awk
:
$ cqlsh -e "SELECT ... FROM ..." | awk 'NR==4'
ПРИМЕР 2. Эквивалент утилиты sed
:
$ cqlsh -e "SELECT ... FROM ..." | sed -n '4p'
ПРИМЕР 3. Если вы хотите напечатать все строки, а не только первую (при условии, что ваш запрос возвращает несколько строк):
$ cqlsh -e "SELECT ... FROM ..." | tail -n +4 | head -n -2
tail -n +4
напечатает все строки, начиная с четвертой, а head -n -2
удалит последние 2 строки (пустая строка + (# rows)
в конце). Ваше здоровье!