如何在同一数据库中基于现有集合创建新的空集合?
创建与现有集合/表结构一致的空集合/表
以下是主流数据库中实现该需求的具体方法:
MongoDB
通过聚合管道的$limit: 0配合out选项,生成结构完全一致的空集合,同时会继承原集合的索引:
db.sourceCollection.aggregate([{ $limit: 0 }], { out: "newCollection" })
或者直接创建集合并复用原集合的验证规则与索引:
db.createCollection("newCollection", { validator: db.sourceCollection.getValidator(), indexSpecs: db.sourceCollection.getIndexes().map(idx => ({ key: idx.key, name: idx.name })) })
MySQL
使用LIKE关键字直接复制原表的完整结构(包括列定义、索引、约束),且不复制数据:
CREATE TABLE new_table LIKE source_table;
PostgreSQL
如果仅需要复制列结构与数据类型:
CREATE TABLE new_table AS SELECT * FROM source_table WHERE false;
如果需要完整复制所有结构(包括索引、约束、默认值等):
CREATE TABLE new_table (LIKE source_table INCLUDING ALL);
SQL Server
通过SELECT INTO搭配恒假条件创建空表,复制原表的列结构与数据类型:
SELECT * INTO new_table FROM source_table WHERE 1 = 0;
若需要复制索引、触发器等额外对象,需单独生成对应脚本执行。
内容的提问来源于stack exchange,提问作者Sam Fisher
相关产品推荐
相关产品推荐

