Почему cqlsh выравнивает строки по правому краю?

Я обнаружил, что строковые значения, отображаемые с помощью cqlsh, выровнены по правому краю. Есть причина для этого? И есть ли способ выровнять строки по левому краю?

cqlsh:test> create table test (id int, a ascii, t text, primary key(id));
cqlsh:test> insert into test (id, a, t) values (1, 'ascii', 'text');
cqlsh:test> insert into test (id, a, t) values (2, 'a', 't');       
cqlsh:test> select * from test;                              

 id | a     | t
----+-------+------
  1 | ascii | text
  2 |     a |    t

(2 rows)

person tbsalling    schedule 04.03.2015    source источник
comment
Да, это раздражает, когда у вас есть очень длинные значения, а некоторые очень короткие. У вас огромный разрыв между данными в последовательных столбцах.   -  person Sridhar Sarnobat    schedule 07.01.2017


Ответы (2)


Я думаю, что это в основном сделано из эстетических соображений, однако вы можете это изменить!

cqlsh — это просто файл python, который использует драйвер python. Вы можете просто изменить следующий код в методе print_formatted_result cqlsh:

    for row in formatted_values:                                                
        line = ' | '.join(col.rjust(w, color=self.color) for (col, w) in zip(row, widths))
        self.writeresult(' ' + line)

Вы можете изменить col.rjust на ljust, center и т. д. или вы можете просто изменить его на «col», чтобы распечатать данные как есть.

Пример использования ljust:

cqlsh:friends> select * from group_friends;

 groupid                              | friendid | time
--------------------------------------+----------+--------
 13814000-1dd2-11b2-8080-808080808080 | 1        | 123456
 13814000-1dd2-11b2-8080-808080808080 | 2        | 123456
 13814000-1dd2-11b2-8080-808080808080 | 4        | 123456
 13814000-1dd2-11b2-8080-808080808080 | 8        | 123456
 13814000-1dd2-11b2-8080-808080808080 | 22       | 123456
 13814000-1dd2-11b2-8080-808080808080 | 1002     | 123456
person Andy Tolbert    schedule 04.03.2015
comment
Чтобы найти файл для изменения, используйте whereis cqlsh. Обычно это /usr/bin/cqlsh.py. Оказавшись внутри файла, найдите def print_formatted_result. - person NatoBoram; 16.07.2018

Попробуйте использовать программу оболочки column для выравнивания столбцов:

$CASSANDRA_HOME/bin/cqlsh <<EOF | grep -v '+--'  | perl -pe 's{[ ]{4,}}{|}g' | column -t -s '|' | tee out.txt
    select mycol1,mycol2 from mykeyspace.mytable;
EOF
  1. Используйте здесь документ, чтобы отправить входные данные cqlsh
  2. Удаление лишних пробелов с помощью вашего любимого инструмента регулярных выражений (но будьте осторожны, чтобы не удалить их в своих данных)
  3. Выравнивание полей на основе | в качестве разделителя/разделителя с помощью программы column
  4. (Необязательно) Скопируйте вывод в текстовый файл, используя tee
person Sridhar Sarnobat    schedule 06.01.2017