【发布时间】:2018-11-16 18:04:07
【问题描述】:
我对 postgresql 还很陌生,并且已经找到了一些关于如何在选择而不是迁移中执行此操作的信息。我有一个用户数据库,其中包含一个名称列,我想将其转换为名字和姓氏列。以下是一些示例名称以及我希望如何在我的 userinfo 表中转换它们:
name
------
"first last"
"first double last-name"
"first"
"No Name Available"
到
first_name | last_name
----------------------|------------
"first" | "last"
"first" | "double last-name"
"first" | ""
"No Name Available" | ""
基本上,我想在迁移中将名称拆分为第一个空格上的 first_name 和 last_name,名称不包含空格,last_name 为空字符串,除非 name 等于“No Name Available”,在这种情况下我想将 first_name 设置为“No Name Available”,将 last_name 设置为“”。这就是我所拥有的:
alter table UserInfo
add column first_name text UserInfo on delete cascade,
add column last_name text UserInfo on delete cascade
--;;
update UserInfo
set first_name = ???
set last_name = ???
--;;
alter table UserInfo
alter column first_name set not null,
alter column last_name set not null,
drop column name
感谢任何帮助,包括部分解决方案;我不确定如何开始。
【问题讨论】:
-
更详细地定义术语“迁移”。你为此使用任何工具吗?或者你正在加载文件?还是您构建查询并执行它们?等等。从 Postgres 到 Postgres 或从任何其他 DBMS?
标签: postgresql