将列添加到现有红移表

2024-04-16

我有一个包含超过 30m 条记录的数据库,我需要向数据库添加两个新列。问题是我需要这些列不为空,并且没有默认值。我以为我只需添加这些没有 NOT NULL 约束的列,用数据填充它们,然后添加约束,但 Redshift 不支持这一点。我心里有另一个解决方案,但我想知道是否有比这更简单的解决方案?

  1. 使用 NOT NULL 和 DEFAULT 创建两个新列
  2. 用数据填充列
  3. 创建一个与目标数据库具有相同列的空表。 (当然,两个新列只是 NOT NULL)
  4. 将目标数据库中的所有内容插入到新数据库中。
  5. 删除目标数据库
  6. 将新数据库重命名为目标。

我会建议:

  • 现存的Table-A
  • 创建一个新的Table-B包含新列,加上一个标识列(例如customer_id) 匹配Table-A.
  • 将数据插入Table-B(2列+标识列)
  • Use CREATE TABLE AS同时创建一个新的Table-C(指定 DISTKEY 和 SORTKEY)查询时Table-A and Table-B通过身份列上的 JOIN
  • 验证内容Table-C
  • VACCUM Table-C(应该不是必需的,但以防万一,而且应该很快)
  • Delete Table-A and Table-B
  • Rename Table-C到所需的表名称(可能与Table-A)

总之:现有列Table-A+ 中的额外列Table-BTable-C

推理:

  • UPDATE语句在 Redshift 中运行得不太好。它需要将每列的现有数据行标记为“已删除”,然后将新行附加到每列的末尾。进行大量的 UPDATES 操作会导致表的大小过大,并且表将变得未排序。它也相对较慢。之后您需要对表进行深度复制或 VACUUM 来修复问题。
  • Using CREATE TABLE AS使用 JOIN 将在一个查询中生成所有“最终状态”数据,并且结果表将被排序并处于“干净”状态
  • 该过程使您有机会验证内容Table-C在进行切换之前。对于调试过程非常方便!

也可以看看:执行深度复制 - Amazon Redshift https://docs.aws.amazon.com/redshift/latest/dg/performing-a-deep-copy.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将列添加到现有红移表 的相关文章

  • 从文件执行db语句

    我在我的应用程序中使用嵌入式 Apache derby 我有一个名为的 SQL 脚本创建的数据库 sql创建数据库中的所有表并用初始数据填充它 例如 SET SCHEMA APP CREATE TABLE study study id bi
  • 如何使用带有 IF EXISTS 子查询的 SQL Select 语句?

    如何使用 IF EXISTS 语句 SQL Server 从子查询中选择布尔值 它应该是这样的 SELECT TABLE1 Id NewFiled IF EXISTS SELECT Id FROM TABLE2 WHERE TABLE2 I
  • C# 和 SQL Server 中嵌套 using 的用法

    这个线程是一个延续是否有理由在 C 中使用子句检查多个内部的 null https stackoverflow com questions 2220422 is there a reason to check for null inside
  • 如何使用 pyodbc 和 MS-Access 在 Python Cursor.execute 中查看真实的 SQL 查询

    我在 Python 中使用以下代码 使用 pyodbc 作为 MS Access 基础 cursor execute select a from tbl where b and c x y 没关系 但是出于维护目的 我需要知道发送到数据库的
  • 如何向多个涉及外键依赖的表插入数据(MySQL)

    我正在寻找将数据插入多个 MySQL 表的最佳实践方法 其中某些列是外键依赖项 这是一个例子 Table contacts contact id first name last name prof id zip code 联系人 表有主键
  • 消息传递功能创建 Sql 查询和数据库视图

    鉴于以下情况 我需要能够获取给定用户参与的所有线程的列表 首先按最新消息排序 仅显示最新消息 每个线程 1 条消息 这是上面的 SQL 查询 SELECT Message MessageId Message CreateDate Messa
  • 为什么这个简单的 MySQL 查询不返回该行?

    我在表中有一行users与用户名test 但由于某种原因 此查询返回空结果集 SELECT id FROM users WHERE username test AND id null 但是 如果我删除 id null段 查询返回结果id 1
  • MySQL 查询在基于特定标签组合获取行时返回不需要的行

    我在 Windows 8 PC 上运行 PHP MySQL 我有一张桌子mytable像下面这样 product tag lot 1111 101 2 1111 102 5 2222 103 6 3333 104 2 4444 101 2
  • SQL 从一列到另一列搜索字符串

    以前可能有人问过这个问题 但我不知道如何搜索它 我想查找 Column2 中的字符串是否是 Column1 的一部分 或者根本没有在 Column1 中使用 Column1 Column2 ABCDE JKL XC XC PQ A XYZ
  • 如何使用 Linq to SQL 从存储过程中检索多行?

    我最近开始使用 Linq to SQL 想知道如何通过执行存储过程来获取多行 这是我想要使用的一个简单的 sp CREATE PROCEDURE gsp ftsmultiple SearchKey varchar 100 AS BEGIN
  • DynamoDBMappingException:HASH 键没有映射

    编写 DynamoDB Java 应用程序时 如果表及其数据模型配置不正确 则在写入表或从表中检索时 您可能会收到 无 HASH 键映射 错误 完整的异常类似于 com amazonaws services dynamodbv2 datam
  • TSQL动态确定SP/Function的参数列表

    我想将通用日志记录片段写入存储过程集合中 我写这篇文章是为了对我们的前端用户体验进行定量测量 因为我知道前端软件使用了哪些 SP 以及它们的使用方式 我想在开始性能调优之前使用它来收集基线 然后显示调优的结果 我可以动态地从 PROCID
  • 有没有办法使用无服务器框架来验证路径

    我在后端使用无服务器框架 使用AWS 我的 serverless yml 像这样 functions getBrand handler functions brand getBrand handler events http path se
  • 检测递归查询中的循环

    我的 PostgreSQL 数据库中有一个有向图 节点和循环之间可以有多个路径 create table edges from int to int insert into edges values 0 1 1 2 2 3 3 4 1 3
  • SQL CLR 内的 WCF 客户端

    我知道它不受支持 而且我知道这甚至不是一个好主意 但是 我希望在 SQL 表值函数中拥有一个 WCF 客户端 我 看似 注册了正确的程序集 但在运行我的客户端时 我收到 WCF 错误 Msg 6522 Level 16 State 1 Li
  • SQL SERVER 和 SET ANSI_NULLS ON、SET QUOTED_IDENTIFIER ON

    所以我在创建脚本时一直盲目地使用ansi nulls on quoted identifier on 因为sqlserver在编写对象脚本时会自动生成它们 我真的没有时间关心这些琐碎的废话 但我想必须提出这些问题 鉴于这些是推荐的设置 是否
  • Hibernate OneToMany 列表中的重复结果

    我已将 1 N 关系与 OneToMany 列表映射 但当我访问该列表时 由于 OUTER JOIN 结果会重复 映射如下所示 Entity public class Programmer ElementCollection fetch F
  • Oracle 求两个时间戳的平均值

    我不明白这有多难 但我似乎无法在任何地方找到解决方案 它是针对日期完成的 但我看不到让它适用于时间戳 我正在尝试做 select avg last timestmp ref timestmp as average from param 它一
  • SQL查询;水平到垂直

    我遇到了涉及将水平行转换为垂直行的 SQL 查询 SQL Server 以下是我的数据 No Flag 1 Flag 2 Flag 3 A 1 2 3 B 4 1 6 转换后 该表应为 No FlagsName Flag value A F
  • R: Knit 给出 SQL-chunk 错误

    我想编织 R markdown 的输出 其中包括几个 SQL 块 但是 如果我开始编织 就会收到错误消息 Line 65 Error in eval expr envir enclos object pp dataset not found

随机推荐

  • Pycharm错误:无法确定模块类型(“WEB_MODULE”)

    我正在使用 Pycharm Professional 4 5 4 开发一个 javascript 项目 在浏览器中打开该项目时发现一些奇怪的行为 项目结构是这样的 MyProject data images python etc webap
  • 为什么不是 obj.style.left = "200px";在这段代码中工作?

    为什么不会 style top 200px 在这段代码中工作 使用以下方式调用元素内的事件oclick this style left 200px 也不行 div The Div div
  • 如何更改 php 错误电子邮件的主题?

    我有以下内容 error log big error 1 my email address 消息发送后 主题行中会显示 PHP error log message 有人可以告诉我如何自定义消息主题吗 error log Error mess
  • 如何在Python 3.6中安装Keras?

    我在安装 Python 3 6 的 Keras 库时遇到问题 每当我尝试安装 Keras 时 它都会抛出错误 当我在互联网上搜索时 Keras 已发布到 Python 3 5 有人有解决方案吗 如果您有 Anaconda 和 Python
  • 当启用删除、插入或更新操作时,LinqDataSource 不支持 Select 属性

    我在单击删除按钮 链接时收到此错误GridView控制 LinqDataSource DataSource 不支持 Select 属性 删除 插入或更新操作已启用 我真的不明白为什么会收到此错误 因为我已经在网站的不同网页上做了同样的事情
  • 键盘中断张量流运行并在此时保存

    有没有办法通过键盘中断来中断张量流会话 并可以选择在此时保存模型 我目前让会话运行过夜 但需要停止它 以便我可以释放内存供电脑在白天使用 随着训练的进行 每个时期都会变慢 因此有时我可能需要等待几个小时才能进行程序中的下一个计划保存 我想要
  • 为 android 4.0 或更高版本创建自定义锁屏?

    我想为 android 4 0 及以上版本创建自定义锁屏 我尝试使用小部件来创建锁屏 但它仅支持 android 4 2 还有其他方法可以创建自定义 Android 锁屏吗 几个月前我在互联网上的某个地方找到了一些片段 我做了一些更改 最近
  • openlayers 地图未在 vuejs 中显示

    以下代码片段是一个 vue 文件 它不会生成任何错误 但 openlayers 地图不会显示 我尝试了 openlayers 的两个 vue 插件 但似乎没有按照我的需要工作 在 vue 之外 代码可以工作 我使用 npm install
  • Google Sheets 数据透视表未更新

    我有一个谷歌应用程序脚本 它将信息提交到有组织的工作表 并希望创建一个包含工作表中所有信息的数据透视表 我可以这样做 但每当我向工作表提交新行数据时 它都不会自动包含在数据透视表中 每次提交新行数据时 我都必须手动更改数据透视表的范围 有什
  • Android:检测打开的键盘,onApplyWindowListener 不起作用

    我试图在键盘打开时隐藏布局底部的一个特定按钮 以便为用户提供更多视图 随着发布androidx core core ktx 1 5 0 alpha02谷歌 最后 添加了一个名为的方法insets isVisible WindowInsets
  • 如何访问在 Amazon ec2 上运行的 django 应用程序?

    所以 我查看了堆栈溢出 其他网站 但无法解决这个问题 因此发布这个问题 我最近开始学习 django 并且现在尝试在 ec2 上运行它 我有一个以下格式的 ec2 实例 ec2 xx xxx xx xxx us west 2 compute
  • 如何使用 Fitch 系统证明 ((p ⇒ q) ⇒ p) ⇒ p

    仅供参考 我使用的逻辑程序无法进行矛盾引入 这一点很可能是无关紧要的 因为我非常怀疑我是否需要使用任何形式的矛盾来证明这一点 在尝试解决这个问题时 我首先假设 p q p 它是否正确 如果是这样 接下来怎么办 如果解决方案看起来如此明显 请
  • “GONE”视图是否会损害性能?

    我正在制作一个应用程序 它可以节省我一些时间 多个活动有一个布局 其中一些视图设置为 GONE 消失 具体取决于正在使用的活动 我知道布局中包含大量视图可能会导致性能不佳 如果我有一个具有大量视图的活动 但其中很大一部分视图都消失了 那么该
  • 在 uiimageview 中加载大图像时的内存消耗

    我正在使用 UIViewContentModeScaleAspectFit 将大小为 2480 3508 的 UIImage 加载到 UIImageView 中 我在加载此图像时收到内存警告 当我在此 UIImageView 中加载一些此尺
  • 如何从列类型列表中的 pandas DataFrame 中删除空值

    只是期待一个从具有列表值的列中删除空值的解决方案 从某种意义上说 我们已经事先替换了一些字符串 它是列表的字符串表示形式的列 In df color我们只是更换 Blue带空字符串 示例数据框 df pd DataFrame Bird pa
  • Visual Studio 2012 Ultimate 新依赖图错误

    每次使用 Visual Studio 2012 Ultimate 创建新的依赖关系图时 我都会收到此错误 Unable to connect to the specified database An exception occurred a
  • 在Python中插入lxml树时出现属性错误

    我正在尝试将 xml 的小结构注入到现有 xml 文件中的特定位置
  • href 链接不可点击或不可突出显示

    我不完全确定为什么我的 a href 链接不起作用 在某个时间点它起作用了 我对 Z Index 做了一些研究 但这似乎不是问题 也不是我有一个重叠的 div 吗 请访问JSFIDDLE NET https jsfiddle net t9v
  • Ajax 如果超过一个 @mention

    我正在尝试使用 jquery ajax php 制作一个 facebook 和 twitter 风格的提及系统 但如果我尝试 提及多个用户 我就会遇到问题 例如 如果我开始输入如下内容 Hi stack how are you 结果显示 s
  • 将列添加到现有红移表

    我有一个包含超过 30m 条记录的数据库 我需要向数据库添加两个新列 问题是我需要这些列不为空 并且没有默认值 我以为我只需添加这些没有 NOT NULL 约束的列 用数据填充它们 然后添加约束 但 Redshift 不支持这一点 我心里有