将所有列名更改为小写 Postgresql
Change all column names to lowercase Postgresql
我的 postgresql 数据库有问题。我添加了 5 个包含大量数据和大量列的表。现在我注意到我添加了大小写字母混合的列,这使得使用 sqlalchemy 或 pandas.read_sql_query 查询它们变得困难,因为我需要双引号来访问它们。
有没有办法用一个命令将列名中的所有值更改为小写字母?
我是 SQL 的新手,感谢您的帮助。
如果您希望简单地确保查询 returns 小写(而不更改原始条目),您可以简单地输入:
select lower(variable) from table;
另一方面,如果您希望实际更改 table 本身的大小写,则必须使用 UPDATE 命令。
UPDATE table SET variable = LOWER(variable);
类似的东西应该可以解决问题:
SELECT LOWER(column) FROM my_table;
在 table 列上使用 anonymous code block
和 FOR LOOP
:
DO $$
DECLARE row record;
BEGIN
FOR row IN SELECT table_schema,table_name,column_name
FROM information_schema.columns
WHERE table_schema = 'public' AND
table_name = 'table1'
LOOP
EXECUTE format('ALTER TABLE %I.%I RENAME COLUMN %I TO %I',
row.table_schema,row.table_name,row.column_name,lower(row.column_name));
END LOOP;
END $$;
演示:db<>fiddle
我的 postgresql 数据库有问题。我添加了 5 个包含大量数据和大量列的表。现在我注意到我添加了大小写字母混合的列,这使得使用 sqlalchemy 或 pandas.read_sql_query 查询它们变得困难,因为我需要双引号来访问它们。 有没有办法用一个命令将列名中的所有值更改为小写字母?
我是 SQL 的新手,感谢您的帮助。
如果您希望简单地确保查询 returns 小写(而不更改原始条目),您可以简单地输入:
select lower(variable) from table;
另一方面,如果您希望实际更改 table 本身的大小写,则必须使用 UPDATE 命令。
UPDATE table SET variable = LOWER(variable);
类似的东西应该可以解决问题:
SELECT LOWER(column) FROM my_table;
在 table 列上使用 anonymous code block
和 FOR LOOP
:
DO $$
DECLARE row record;
BEGIN
FOR row IN SELECT table_schema,table_name,column_name
FROM information_schema.columns
WHERE table_schema = 'public' AND
table_name = 'table1'
LOOP
EXECUTE format('ALTER TABLE %I.%I RENAME COLUMN %I TO %I',
row.table_schema,row.table_name,row.column_name,lower(row.column_name));
END LOOP;
END $$;
演示:db<>fiddle