【发布时间】:2009-07-21 19:05:17
【问题描述】:
我有一个包含开始日期、结束日期和排除项的单个数据库字段
可用 DD/MONTH/YYYY [到 DD/MONTH/YYYY]?[,排除 WORD [, WORD]*]?
意味着它总是以“可用的 DD/MONTH/YYYY”开头,可选地有一个“到 DD/MONTH/YYYY”,并且可选地有一个以逗号分隔的字符串列表的排除子句。想想 + 、 * 和 ? 的正则表达式含义
我的任务是提取数据,因此我们现在将有一个“startdate”列、“enddate”列和一个包含排除项的新表。它将需要使用从可用性字符串解析的值填充 startdate 和 enddate 列。它还需要在新的排除表中创建多条记录,为可用性字符串中“排除”关键字后面的每个逗号分隔值创建一条记录。
这是我只能在 SQL 中执行的迁移(postgres 8.4)吗?
这是针对 postgres 8.4 的。
更新: 在同事的帮助下,我们现在有了一个 sql 脚本,它的结果是 sql 可以根据排除项的解析来执行插入语句。它在 sql 中使用一堆 case 语句和字符串操作来生成结果。然后我将输出发送到一个文件并执行该文件以执行插入。我对开始和结束日期列做同样的事情。
这不是 100% 的 sql,而是一个简单的 .bat 或 .sh 文件,它运行第一个 .sql 文件,然后只需要生成一个即可。
感谢您的意见。
【问题讨论】:
-
表上是否会有一个排序 id,其 startdate 和 enddate 将是排除表上的外键?
-
是的,具有 startdate 和 enddate 的实体有一个 id。它与排除是多对多的关系,因此两者有一个连接表。
标签: sql postgresql parsing migration