\copy
Performs a frontend (client) copy. This is an operation that runs an SQL COPY command, but instead of the server reading or writing the specified file, psql reads or writes the file and routes the data between the server and the local file system. This means that file accessibility and privileges are those of the local user, not the server, and no SQL superuser privileges are required.
Reading PG 18·Select a recorded version
- Client
- psql 18.7
- Case-sensitive spelling
- \copy
- command
- \copy
- manual path
- app-psql.html#APP-PSQL-META-COMMANDS-COPY
- modifiers
- Unknown
- spellings
- \copy
Definition PG 18
\copy {table[ (column_list) ] }from{'filename'| program'command'| stdin | pstdin } [ [ with ] (option[, ...] ) ] [ wherecondition]\copy {table[ (column_list) ] | (query) }to{'filename'| program'command'| stdout | pstdout } [ [ with ] (option[, ...] ) ]Performs a frontend (client) copy. This is an operation that runs an SQL
COPYcommand, but instead of the server reading or writing the specified file, psql reads or writes the file and routes the data between the server and the local file system. This means that file accessibility and privileges are those of the local user, not the server, and no SQL superuser privileges are required.When
programis specified,commandis executed by psql and the data passed from or tocommandis routed between the server and the client. Again, the execution privileges are those of the local user, not the server, and no SQL superuser privileges are required.For
\copy ... from stdin, data rows are read from the same source that issued the command, continuing until a line containing only\.is read or the stream reaches EOF. This option is useful for populating tables in-line within an SQL script file. For\copy ... to stdout, output is sent to the same place as psql command output, and theCOPYcommand status is not printed (since it might be confused with a data row). To read/write psql's standard input or output regardless of the current command source orcount\ooption, writefrom pstdinorto pstdout.The syntax of this command is similar to that of the SQL
COPYcommand. All options other than the data source/destination are as specified forCOPY. Because of this, special parsing rules apply to the\copymeta-command. Unlike most other meta-commands, the entire remainder of the line is always taken to be the arguments of\copy, and neither variable interpolation nor backquote expansion are performed in the arguments.Tip
Another way to obtain the same result as
\copy ... tois to use the SQLCOPY ... TO STDOUTcommand and terminate it with\gorfilename\g |. Unlikeprogram\copy, this method allows the command to span multiple lines; also, variable interpolation and backquote expansion can be used.Tip
These operations are not as efficient as the SQL
COPYcommand with a file or program data source or destination, because all data must pass through the client/server connection. For large amounts of data the SQL command might be preferable.
Exact case-sensitive spellings
\copy
Spellings in this manual definition
| Command | Documented suffix modifiers |
|---|---|
| \copy | None listed in this signature |
Compare versions
Complete source facts
documentation revision
{"inputs":[{"file":"app-psql.html","kind":"same-version-reviewed-manual","locale":"en","sha256":"af50448485df02bdef2b72b8347192ba029c7082b8d0392ecb17db44ad533aaf","version":"18.7"},{"file":"app-psql.html","kind":"same-version-reviewed-manual","locale":"zh-Hans","sha256":"cb475c53a16d9e06358f5e6c9c5649645db92568cfd319f230c62c9f57ae090b","version":"18.7"}],"release":"18.7","runtime_remeasured":false,"source_revision":"pgdoc:b9f0e7232f60f380d642ac9b99226606c254b552"}signature
\copy { table [ ( column_list ) ] } from { 'filename' | program 'command' | stdin | pstdin } [ [ with ] ( option [, ...] ) ] [ where condition ] \copy { table [ ( column_list ) ] | ( query ) } to { 'filename' | program 'command' | stdout | pstdout } [ [ with ] ( option [, ...] ) ]Source references
Full definition and evidence JSON
Definition sources
center · PostgreSQL 18 · 1b2d62b4845aa46374f2cb680f95d3392322cc8128646992ae4e18d0e7084915
Text language: en · 1b2d62b4845aa46374f2cb680f95d3392322cc8128646992ae4e18d0e7084915