SQLite: ОБНОВИТЬ все строки / столбцы всех таблиц с одинаковой (абсолютной) функцией REPLACE - PullRequest
0 голосов
/ 17 февраля 2020

Как все записи всех таблиц базы данных можно обновить, скажем, n = REPLACE(n,"abc","xyz")? Я не знаю заранее, сколько таблиц в базе данных и как они называются. Также я не знаю, сколько столбцов в каждой таблице и каковы их имена.

1 Ответ

0 голосов
/ 18 февраля 2020

После подтверждения того, что вы действительно хотите создать новую базу данных, в которой определенная строка заменена вне семантических c соображений, метод, который я уже предложил в моем первом комментарии, был подтвержден вами как решение для вас .

С некоторыми дополнительными деталями и пояснениями:

Используйте функцию .dump, ищите и заменяйте в выходных данных (сохраненных в текстовом файле). Затем создайте новую базу данных с нужным изменением, просто прочитав из «пустой» базы данных.

Пустую базу данных можно создать с помощью вызова sqlite с именем файла несуществующего файла. Подача этого вызова с помощью .dump ed файла заполняет эту новую базу данных измененным вводом. Результат .dump, конечно, может быть отредактирован с помощью sed как один из способов поиска и замены.

Т.е., как вы прокомментировали, sqlite3 db.sqlite .dump | sed 's|FROM|TO|g' | sqlite3 db-new.sqlite должен работать и, похоже, сделать трюк для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...