Как вставить новую строку (\ n) внутри строки (текста) в Cassandra с помощью команды CQLSH?

Обновление: новая строка работает, если я вставляю ту же строку с помощью скрипта драйвера Python.

session.execute("INSERT INTO ctable" + " (cid, cstring) VALUES (%s, %s)", ('2', 'row1\nrow2'))

Все еще не понимаю, почему команда CQLSH не работает.

Исходный вопрос: я пытаюсь вставить очень длинную строку в Cassandra с помощью команды CQLSH и добавить '\n', чтобы разбить строку на две строки при отображении.

Я попытался

insert into ctable (cid, cstring ) values('2', 'row1\nrow2');
insert into ctable (cid, cstring ) values('2', 'row1\\nrow2');
insert into ctable (cid, cstring ) values('2', 'row1\r\nrow2');

Ни одно из приведенных выше утверждений не сработало, все \n обрабатывались как обычные символы. Кто-нибудь может помочь?


person Haifeng Zhang    schedule 09.12.2015    source источник


Ответы (3)


Краткий ответ: cqlsh никак не обрабатывает escape-символы в строках. Если вы хотите вставить непечатаемые символы, такие как перевод строки \n, используйте драйверы cassandra для вашего языка. Подробный ответ см. в обсуждении проблемы CASSANDRA-8790.

person shutty    schedule 09.12.2015
comment
Спасибо! Я использовал драйвер Python для Cassandra, и он работает. - person Haifeng Zhang; 09.12.2015

Что ж, вы можете сделать это прямо в CQLSH, если на самом деле нажмете клавишу ввода при вводе строки. вместо ввода символов '\n' просто нажмите Enter. CQLSH должен отображать 3 точки, указывающие на добавление содержимого в новую строку.

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

person FocusBlast    schedule 24.11.2016

Вы можете попробовать этот SQL, просто введите:

insert into ctable (cid, cstring ) values('2', 'row1
row2');

person Sumrise    schedule 15.01.2019
comment
есть такой же ответ от FocusBlast - зачем дублировать? - person Alex Ott; 15.01.2019