从另一个 Vertica 数据库复制数据
COPY FROM VERTICA 将表数据从一个 Vertica 数据库导入到另一个。需要满足以下要求:
-
您已经使用 CONNECT TO VERTICA 打开了与目标数据库的连接。
-
源数据库最多只能低于目标数据库一个主要版本。
-
目标数据库中的表必须存在。
-
源表列和目标表列必须具有相同或兼容的数据类型。
导入过程
导入过程分为三步:
-
使用 CONNECT TO VERTICA 连接到源数据库。例如:
=> CONNECT TO VERTICA vmart USER dbadmin PASSWORD '' ON 'VertTest01',5433; CONNECT
-
使用 COPY FROM VERTICA 导入所需数据。例如,下面的语句将
customer_dimension
中的所有表数据导入到同名表中:=> COPY customer_dimension FROM VERTICA vmart.customer_dimension; Rows Loaded ------------- 500000 (1 row) => DISCONNECT vmart; DISCONNECT
注意
同一会话中的连续 COPY FROM VERTICA 语句可以通过同一连接从多个表中导入数据。 -
DISCONNECT 当所有导入和导出操作完成后与源数据库断开连接:
=> DISCONNECT vmart; DISCONNECT
注意
关闭会话时,数据库连接也会关闭。但是,比较好的做法是显式关闭与其他数据库的连接,从而释放资源并防止可能在会话中运行的其他 SQL 脚本出现问题。如果您在同一个会话中运行脚本并且该会话尝试打开与同一个数据库的连接,请始终关闭连接以防止出现潜在错误,因为每个会话一次只能拥有一个与给定数据库之间的连接。
导入标识列
可按如下方式导入标识(和自动增量)列:
-
如果源和目标表都具有标识列并且配置参数 CopyFromVerticaWithIdentity 设置为 true (1),则无需列出它们。
-
如果源表有标识列,而目标表没有,则必须显式列出源列和目标列。
当心
如果没有列出要导出的标识列,则会导致出错,因为这会解释为目标表中缺失标识列。
导入列后,标识列值不会自动增加。请使用 ALTER SEQUENCE 进行更新。
此语句的默认行为是通过直接在源表中指定标识(和自动增量)列来导入它们。要全局禁用此行为,请设置 CopyFromVerticaWithIdentity 配置参数。