Ответ, отправленный Mahomedalid, имеет небольшую проблему:
Код замены внутри заменяет «<columns_to_delete>,
» на «», эта замена имеет проблему, если поле для замены является последним в
Мое предложение:
SET @sql = CONCAT('SELECT ', (SELECT REPLACE(GROUP_CONCAT(COLUMN_NAME),
'<columns_to_delete>', '\'FIELD_REMOVED\'')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '<table>'
AND TABLE_SCHEMA = '<database>'), ' FROM <table>');
Замена <table>
:
SET @sql = CONCAT('SELECT ', (SELECT REPLACE(GROUP_CONCAT(COLUMN_NAME),
'<columns_to_delete>', '\'FIELD_REMOVED\'')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '<table>'
AND TABLE_SCHEMA = '<database>'), ' FROM <table>');
Замена <table>
, <database>
и `
Удаленный столбец заменяется строкой« FIELD_REMOVED », в моем случае это работает, потому что я пытался сохранить память. (Поле, которое я удалял, представляет собой BLOB размером около 1 МБ)