2013-04-05 2 views
0

Я унаследовал базу данных MySQL, содержащую много столбцов во многих таблицах с пробелами в их именах. Меня попросили изменить все пробелы в именах столбцов на символы подчеркивания. Есть ли способ сделать это со сценарием?Заменить пространства в имени столбца с помощью подчёркивания MySQL

Я думал, что могу получить их все перечисленные с помощью SELECT из information_schema .... но я не уверен, как я могу сделать замену.

Моей логикой было бы то, что если имя столбца содержит пробел, замените его знаком подчеркивания. Но я не знаю, как это сделать.

+0

Можно ли считать простой сценарий Python для этого? – ThinkCode

+0

Я не уверен, как запустить скрипт Python. Я бы подумал об этом! –

ответ

2

если у вас есть привилегии, вы должны сделать следующее:

UPDATE COLUMNS SET COLUMN_NAME = REPLACE(COLUMN_NAME, ' ', '_') 

Но, скорее всего, вы не можете изменить схему.

+0

Что-то вроде этого? обновление INFORMATION_SCHEMA.TABLES присоединиться INFORMATION_SCHEMA.COLUMNS B ON a.TABLE_Schema = b.TABLE_SCHEMA установить b.COLUMN_NAME = ЗАМЕНИТЬ (b.COLUMN_NAME, '', '_') где a.TABLE_SCHEMA = 'имя_базы_данных' ; – ThinkCode

+0

@ThinkCode: «Целевая таблица b UPDATE не обновляется»: D –

+0

Почему она не может быть обновлена ​​при наличии правильных привилегий? – ThinkCode

-1
update information_schema.TABLES a 
     join 
    information_schema.COLUMNS b ON a.TABLE_Schema = b.TABLE_SCHEMA 
set 
    b.COLUMN_NAME = REPLACE(b.COLUMN_NAME, ' ', '_') 
where 
    a.TABLE_SCHEMA = 'YOURDBNAME'; 

Raheel Hasan должен быть правильным ответом, если у вас есть привилегии для базы данных information_schema.