我创建了一堆SQLite数据库表。表格中的许多列都有带空格的名称,我现在意识到这并不是一个好主意。有没有一种方法可以编写一条命令来消除所有表中所有列的所有空格?我知道我一次可以做一次(所有可能重复的内容似乎都解决了这个问题,而不是我的问题),但这将永远困扰我。关于如何执行此操作的任何想法?
答案 0 :(得分:1)
使用以下SQL查找包含空格的所有列名称。我还包括了SQL以生成新名称。
SELECT t.name as tablename, c.name as badcol, replace(c.name, ' ','_') as newcolname
FROM sqlite_master t
JOIN pragma_table_info(t.name) c
WHERE t.type = 'table' AND c.name like '% %';
在这里,您必须生成如下所示的alter语句:
ALTER table <tablename> RENAME COLUMN <badcol> to <newcolname>;
虽然我无法确定如何将参数列表直接传递给Alter table命令,但是可以使用以下SQL为您生成alter命令,然后仅复制/粘贴结果并执行它们的列表。
SELECT ('ALTER TABLE ' || t.name || ' RENAME COLUMN ' || '[' || c.name || ']'
|| ' TO ' || '[' || REPLACE(c.name, ' ','_') || '];')
FROM sqlite_master t
JOIN pragma_table_info(t.name) c
WHERE t.type = 'table' AND c.name like '% %';
在此SQL中,我用下划线替换了col名称中的空格,但是您可以看到可以用所需的列重命名解决方案替换REPLACE函数的地方。