Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在postgres中使用copy命令将数据从一个表复制到另一个表_Sql_Postgresql_Copy - Fatal编程技术网

Sql 如何在postgres中使用copy命令将数据从一个表复制到另一个表

Sql 如何在postgres中使用copy命令将数据从一个表复制到另一个表,sql,postgresql,copy,Sql,Postgresql,Copy,我们使用copy命令将一个表的数据复制到数据库之外的文件中 是否可以使用命令将一个表的数据复制到另一个表 如果是,请任何人分享查询 或者有没有更好的方法,比如我们可以使用pg_dump或类似的东西。你不能轻松做到这一点,但也没有必要这么做 CREATE TABLE mycopy AS SELECT * FROM mytable; 或 如果只需要选择某些列或对其重新排序,可以执行以下操作: INSERT INTO mycopy(colA, colB) SELECT col1, col2 FROM

我们使用copy命令将一个表的数据复制到数据库之外的文件中

是否可以使用命令将一个表的数据复制到另一个表

如果是,请任何人分享查询


或者有没有更好的方法,比如我们可以使用pg_dump或类似的东西。

你不能轻松做到这一点,但也没有必要这么做

CREATE TABLE mycopy AS
SELECT * FROM mytable;

如果只需要选择某些列或对其重新排序,可以执行以下操作:

INSERT INTO mycopy(colA, colB)
SELECT col1, col2 FROM mytable;

您还可以仅对目标表执行选择性pg_转储和还原。

假设已经有一个表,并且您希望将此表中的所有记录复制到数据库中当前不存在的另一个表中,则以下查询将为您执行此任务:

SELECT * into public."NewTable" FROM public."ExistingTable";

如果两个表中的列(名称和数据类型)相同,则可以使用以下

INSERT INTO receivingtable (SELECT * FROM sourcetable WHERE column1='parameter' AND column2='anotherparameter');

无需复制命令:
insert into other(col1,col2)从其中选择col1,col2
使用复制/转储的时间是在未连接的数据库之间移动数据时(使用文件作为临时数据)。如果表位于同一数据库中,则不需要这样做。感谢您的回复,但我只是想知道是否可以使用copy命令将数据从一个表复制到另一个表。如果是,如何创建?我刚刚在不同的模式中为应用程序创建了重复的表,但是当我尝试从mytable中插入mycopy SELECT*时,我得到了
错误:列“order”的类型是整数,但表达式的类型是文本行2:从django_应用程序中选择*。关于_post
要清楚,
order
在两个表中都是整数。@RyanM请回答新问题,并在这两个表中显示
psql
\d
输出tables@RyanM一样。您可以通过使用列名来避免这种情况,比如
INSERT INTO mycopy(a,b)SELECT*FROM mytable
,但我来这里是想找到一种替代方法。我的表都有相同的列,只是顺序不同。结果证明这是不可能的。对于postgres 11.2和alpine linux 3.9,第二个选项(包括全部)非常适合我。请注意,使用(包括全部)创建的表将与其他表共享序列请注意,
select。。。into
语法已被弃用,取而代之的是符合标准的
创建表。。。如选择…
INSERT INTO receivingtable (SELECT * FROM sourcetable WHERE column1='parameter' AND column2='anotherparameter');