#escaping
Вопрос:
У меня есть база данных, в которой, как минимум, есть столбцы type|text
.
Теперь я хочу сбросить ее в текстовый файл, который может быть отредактирован человеком, а затем снова импортирован в базу данных. Поскольку text
столбец может содержать разрывы строк, мне нужно каким-то образом избежать их.
Одним из примеров было бы просто избежать взломов линий:
1|some text
2|some other text
1|this is
multiline
text
1|even more text
два недостатка заключаются в том, что экранирование каждого конца строки утомительно для человека, редактирующего данные, а многострочные текстовые записи встречаются редко.
Другой подход может заключаться в том, чтобы рассматривать все строки, которые не начинаются с [0-9]|
, как принадлежащие предыдущей строке(строкам), но многострочный текст может содержать строки , которые начинаются с [0-9]|
, тем более, что люди могут добавлять строки из такого текстового дампа в качестве новых записей. Так что для этого потребуется какое-то спасение, например
1|some text
2|this is multi-line
and does not need to be escaped
1|this is multi-line text
1|with the next line escaped because it starts with 1|
1|even more text
Тем не менее, это потребовало бы произвольного глубокого экранирования, когда текст содержит уже экранированные строки, что может привести к ошибкам и сбить с толку людей.
Сейчас я ищу схему, которая проста в использовании для людей и легко разбирается обратно в строки базы данных.