使用 COPY
命令将数据加载进 Apache Cloudberry
你可以使用 COPY FROM
命令从本地文件系统中的文件或通过标准输入加载数据到数据库表中,并将这些数据添加到表的末尾。使用 COPY
命令加载数据是一个串行过程,即所有数据都通过单进程在 Apache Cloudberry 的 Coordinator 实例中加载。因此,COPY
命令更适合数据量较小的情况。
在使用 COPY
命令时,Coordinator 主机上运行的 postgres
进程必须能够访问源文件。你可以通过指定相对于 Coordinator 主机数据目录的源文件名,或者指定一个绝对路径来直接指定文件的位置。
此外,Apache Cloudberry 可以通过客户端与 Coordinator 服务器之间的连接,从标准输入 (STDIN) 读取数据,或向标准输出 (STDOUT) 写入数据。该功能使数据加载更灵活,使得从各种数据源向数据库传输数据成为可能。
从文件加载数据
COPY
命令指示 postgres
数据库的后台进程去打开一个特定的文件,并读取该文件的内容,最后将这些内容添加到指定的表中。为了顺利完成这一过程,数据库后台进程必须具备对该文件的读取权限。这就要求你在指定文件路径时,既可以提供一个位于 Coordinator 主机上的绝对路径,也可以给出一个相对于 Coordinator 数据目录的路径。
COPY <table_name> FROM </path/to/filename>;
从标准输入加载数据
在数据加载前,为了免去将数据文件传输至 Coordinator 主机的麻烦,COPY FROM STDIN
提供了一种便捷方 式,即通过标准输入渠道 (Standard Input Channel) 直接向 postgres
数据库后台发送数据。使用这个命令时,数据库后台会持续接收输入的数据行,直到遇到一个仅含有反斜杠和点号(\.
)的行为止,这标志着数据输入的结束。
COPY <table_name> FROM <STDIN>;