{"kind": "psql", "major": "18", "item": {"slug": "cmd-63-6f-70-79", "name": "\\copy", "name_zh": "", "category": "Data transfer and large objects", "summary": "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.", "aliases": ["\\copy"], "content_hash": "03eb58f6edb205fb74059436caad4fd5e2617754ed56a76aacf3658ff95584ad", "versions": {"10": {"facts": [{"label": "Client", "value": "psql 10.23"}, {"label": "Case-sensitive spelling", "value": "\\copy"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-6f-70-79/?v=10", "text": "\\copy"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\copy", "related": [{"url": "/wiki/tool/psql/?v=10", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "label": "10.23", "major": "10", "channel": "historical", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/10/postgresql-10-A4.pdf", "bytes": 12631706, "pages": 2591, "sha256": "34497ab9efb45c5bdf1bd11b9016b5451354feb462fa029cf74557a5fa5fbbc1", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/10/postgresql-10-US.pdf", "bytes": 12531684, "pages": 2724, "sha256": "429cc7133ddf4f97c560aa466dc9caea4b718721a8321e293357037cf0af4733", "built_at": "2026-09-26"}}, "tree": "10", "index": "index.html", "major": "10", "pages": 1085, "release": "10.23", "source_url": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "svg_assets": 0, "source_mode": "en HTML verified against the pinned official archive", "source_sha256": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, "revision": "f9301feba91e2e2566038a36b8cee0e4402db68989538f88670fddd20b1f78ea", "evidence_kind": "English manual and source declarations", "source_sha256": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, "sources": [{"url": "/docs/10/app-psql.html#APP-PSQL-META-COMMANDS-COPY", "file": "app-psql.html", "label": "10.23 English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-COPY", "sha256": "9e11fe3148cb8c085808f632ed972aa4514332a67758a083a080169101eeb7a4"}], "sections": [], "modifiers": [], "signature": "\\copy { table [ ( column_list ) ] | ( query ) } { from | to } { 'filename' | program 'command' | stdin | stdout | pstdin | pstdout } [ [ with ] ( option [, ...] ) ]", "spellings": ["\\copy"], "description": ["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."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-COPY\"><span class=\"term\"><code class=\"literal\">\\copy { <em class=\"replaceable\"><code>table</code></em> [ ( <em class=\"replaceable\"><code>column_list</code></em> ) ] | ( <em class=\"replaceable\"><code>query</code></em> ) } { <code class=\"literal\">from</code> | <code class=\"literal\">to</code> } { <em class=\"replaceable\"><code>'filename'</code></em> | program <em class=\"replaceable\"><code>'command'</code></em> | stdin | stdout | pstdin | pstdout } [ [ with ] ( <em class=\"replaceable\"><code>option</code></em> [, ...] ) ]</code></span></dt><dd>\n<p>Performs a frontend (client) copy. This is an operation that runs an SQL <a class=\"xref\" href=\"/docs/10/sql-copy.html\" title=\"COPY\"><span class=\"refentrytitle\">COPY</span></a> command, but instead of the server reading or writing the specified file, <span class=\"application\">psql</span> 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.</p>\n<p>When <code class=\"literal\">program</code> is specified, <em class=\"replaceable\"><code>command</code></em> is executed by <span class=\"application\">psql</span> and the data passed from or to <em class=\"replaceable\"><code>command</code></em> is 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.</p>\n<p>For <code class=\"literal\">\\copy ... from stdin</code>, data rows are read from the same source that issued the command, continuing until <code class=\"literal\">\\.</code> is read or the stream reaches EOF. This option is useful for populating tables in-line within a SQL script file. For <code class=\"literal\">\\copy ... to stdout</code>, output is sent to the same place as <span class=\"application\">psql</span> command output, and the <code class=\"literal\">COPY <em class=\"replaceable\"><code>count</code></em></code> command status is not printed (since it might be confused with a data row). To read/write <span class=\"application\">psql</span>'s standard input or output regardless of the current command source or <code class=\"literal\">\\o</code> option, write <code class=\"literal\">from pstdin</code> or <code class=\"literal\">to pstdout</code>.</p>\n<p>The syntax of this command is similar to that of the SQL <a class=\"xref\" href=\"/docs/10/sql-copy.html\" title=\"COPY\"><span class=\"refentrytitle\">COPY</span></a> command. All options other than the data source/destination are as specified for <a class=\"xref\" href=\"/docs/10/sql-copy.html\" title=\"COPY\"><span class=\"refentrytitle\">COPY</span></a>. Because of this, special parsing rules apply to the <code class=\"command\">\\copy</code> meta-command. Unlike most other meta-commands, the entire remainder of the line is always taken to be the arguments of <code class=\"command\">\\copy</code>, and neither variable interpolation nor backquote expansion are performed in the arguments.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>Another way to obtain the same result as <code class=\"literal\">\\copy ... to</code> is to use the SQL <code class=\"literal\">COPY ... TO STDOUT</code> command and terminate it with <code class=\"literal\">\\g <em class=\"replaceable\"><code>filename</code></em></code> or <code class=\"literal\">\\g |<em class=\"replaceable\"><code>program</code></em></code>. Unlike <code class=\"literal\">\\copy</code>, this method allows the command to span multiple lines; also, variable interpolation and backquote expansion can be used.</p>\n</div>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>These operations are not as efficient as the SQL <code class=\"command\">COPY</code> command 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.</p>\n</div>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-COPY", "comparison_data": {"modifiers": [], "signature": "\\copy { table [ ( column_list ) ] | ( query ) } { from | to } { 'filename' | program 'command' | stdin | stdout | pstdin | pstdout } [ [ with ] ( option [, ...] ) ]", "spellings": ["\\copy"], "definition": "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. When program is specified, command is executed by psql and the data passed from or to command is 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 \\. is read or the stream reaches EOF . This option is useful for populating tables in-line within a SQL script file. For \\copy ... to stdout , output is sent to the same place as psql command output, and the COPY count command 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 or \\o option, write from pstdin or to pstdout . The syntax of this command is similar to that of the SQL COPY command. All options other than the data source/destination are as specified for COPY . Because of this, special parsing rules apply to the \\copy meta-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 ... to is to use the SQL COPY ... TO STDOUT command and terminate it with \\g filename or \\g | program . Unlike \\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 COPY command 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."}, "comparison_hash": "d122665aea911d61f06c8d371e1cb4ac67d38429875a48dcdd95561511ff6aa3"}, "11": {"facts": [{"label": "Client", "value": "psql 11.22"}, {"label": "Case-sensitive spelling", "value": "\\copy"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-6f-70-79/?v=11", "text": "\\copy"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\copy", "related": [{"url": "/wiki/tool/psql/?v=11", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "label": "11.22", "major": "11", "channel": "historical", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/11/postgresql-11-A4.pdf", "bytes": 13057499, "pages": 2732, "sha256": "41d75855e610d0d9b8802b87dc5b080bef8d7e91c7cf69401fbf8d3cf801b4b5", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/11/postgresql-11-US.pdf", "bytes": 12961189, "pages": 2883, "sha256": "6a8899ef36935a5b7ed2b436207564a567a4ef1eb1c2200195876b8de4d4fa30", "built_at": "2026-09-26"}}, "tree": "11", "index": "index.html", "major": "11", "pages": 1125, "release": "11.22", "source_url": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "svg_assets": 0, "source_mode": "en HTML verified against the pinned official archive", "source_sha256": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, "revision": "53315ddaf3b3f9e6669fd1edc096bbb2cd4a65ea3e836c89e542b43af9ba3a7f", "evidence_kind": "English manual and source declarations", "source_sha256": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, "sources": [{"url": "/docs/11/app-psql.html#APP-PSQL-META-COMMANDS-COPY", "file": "app-psql.html", "label": "11.22 English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-COPY", "sha256": "32c4d489e91e59715de2f7c3264fcccab3dd1eca54673dbfeac61304b0c54d4d"}], "sections": [], "modifiers": [], "signature": "\\copy { table [ ( column_list ) ] | ( query ) } { from | to } { 'filename' | program 'command' | stdin | stdout | pstdin | pstdout } [ [ with ] ( option [, ...] ) ]", "spellings": ["\\copy"], "description": ["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."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-COPY\"><span class=\"term\"><code class=\"literal\">\\copy { <em class=\"replaceable\"><code>table</code></em> [ ( <em class=\"replaceable\"><code>column_list</code></em> ) ] | ( <em class=\"replaceable\"><code>query</code></em> ) } { <code class=\"literal\">from</code> | <code class=\"literal\">to</code> } { <em class=\"replaceable\"><code>'filename'</code></em> | program <em class=\"replaceable\"><code>'command'</code></em> | stdin | stdout | pstdin | pstdout } [ [ with ] ( <em class=\"replaceable\"><code>option</code></em> [, ...] ) ]</code></span></dt><dd>\n<p>Performs a frontend (client) copy. This is an operation that runs an SQL <a class=\"xref\" href=\"/docs/11/sql-copy.html\" title=\"COPY\"><span class=\"refentrytitle\">COPY</span></a> command, but instead of the server reading or writing the specified file, <span class=\"application\">psql</span> 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.</p>\n<p>When <code class=\"literal\">program</code> is specified, <em class=\"replaceable\"><code>command</code></em> is executed by <span class=\"application\">psql</span> and the data passed from or to <em class=\"replaceable\"><code>command</code></em> is 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.</p>\n<p>For <code class=\"literal\">\\copy ... from stdin</code>, data rows are read from the same source that issued the command, continuing until <code class=\"literal\">\\.</code> is read or the stream reaches EOF. This option is useful for populating tables in-line within a SQL script file. For <code class=\"literal\">\\copy ... to stdout</code>, output is sent to the same place as <span class=\"application\">psql</span> command output, and the <code class=\"literal\">COPY <em class=\"replaceable\"><code>count</code></em></code> command status is not printed (since it might be confused with a data row). To read/write <span class=\"application\">psql</span>'s standard input or output regardless of the current command source or <code class=\"literal\">\\o</code> option, write <code class=\"literal\">from pstdin</code> or <code class=\"literal\">to pstdout</code>.</p>\n<p>The syntax of this command is similar to that of the SQL <a class=\"xref\" href=\"/docs/11/sql-copy.html\" title=\"COPY\"><span class=\"refentrytitle\">COPY</span></a> command. All options other than the data source/destination are as specified for <a class=\"xref\" href=\"/docs/11/sql-copy.html\" title=\"COPY\"><span class=\"refentrytitle\">COPY</span></a>. Because of this, special parsing rules apply to the <code class=\"command\">\\copy</code> meta-command. Unlike most other meta-commands, the entire remainder of the line is always taken to be the arguments of <code class=\"command\">\\copy</code>, and neither variable interpolation nor backquote expansion are performed in the arguments.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>Another way to obtain the same result as <code class=\"literal\">\\copy ... to</code> is to use the SQL <code class=\"literal\">COPY ... TO STDOUT</code> command and terminate it with <code class=\"literal\">\\g <em class=\"replaceable\"><code>filename</code></em></code> or <code class=\"literal\">\\g |<em class=\"replaceable\"><code>program</code></em></code>. Unlike <code class=\"literal\">\\copy</code>, this method allows the command to span multiple lines; also, variable interpolation and backquote expansion can be used.</p>\n</div>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>These operations are not as efficient as the SQL <code class=\"command\">COPY</code> command 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. Also, because of this pass-through method, <code class=\"literal\">\\copy ... from</code> in CSV mode will erroneously treat a <code class=\"literal\">\\.</code> data value alone on a line as an end-of-input marker.</p>\n</div>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-COPY", "comparison_data": {"modifiers": [], "signature": "\\copy { table [ ( column_list ) ] | ( query ) } { from | to } { 'filename' | program 'command' | stdin | stdout | pstdin | pstdout } [ [ with ] ( option [, ...] ) ]", "spellings": ["\\copy"], "definition": "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. When program is specified, command is executed by psql and the data passed from or to command is 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 \\. is read or the stream reaches EOF . This option is useful for populating tables in-line within a SQL script file. For \\copy ... to stdout , output is sent to the same place as psql command output, and the COPY count command 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 or \\o option, write from pstdin or to pstdout . The syntax of this command is similar to that of the SQL COPY command. All options other than the data source/destination are as specified for COPY . Because of this, special parsing rules apply to the \\copy meta-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 ... to is to use the SQL COPY ... TO STDOUT command and terminate it with \\g filename or \\g | program . Unlike \\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 COPY command 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. Also, because of this pass-through method, \\copy ... from in CSV mode will erroneously treat a \\. data value alone on a line as an end-of-input marker."}, "comparison_hash": "f994035ea529a0a343c4f0cc3fdb004fa7c00ec7c1601486b99bb08d1720afd5"}, "12": {"facts": [{"label": "Client", "value": "psql 12.22"}, {"label": "Case-sensitive spelling", "value": "\\copy"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-6f-70-79/?v=12", "text": "\\copy"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\copy", "related": [{"url": "/wiki/tool/psql/?v=12", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "label": "12.22", "major": "12", "channel": "historical", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/12/postgresql-12-A4.pdf", "bytes": 13424351, "pages": 2803, "sha256": "7422cf53fd1939e7a3d2925231a88b0330e468afa5393627cac0ff86158a0621", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/12/postgresql-12-US.pdf", "bytes": 13322565, "pages": 2958, "sha256": "51f3b04e72907fc38512685946223452ea65f84419c60c66241dfa3396035e77", "built_at": "2026-09-26"}}, "tree": "12", "index": "index.html", "major": "12", "pages": 1131, "release": "12.22", "source_url": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "svg_assets": 2, "source_mode": "en HTML verified against the pinned official archive", "source_sha256": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, "revision": "7a827e97cbfacd7febff75f34443e2043e40723de5b6d8c9d81a9430b65a37e4", "evidence_kind": "English manual and source declarations", "source_sha256": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, "sources": [{"url": "/docs/12/app-psql.html#APP-PSQL-META-COMMANDS-COPY", "file": "app-psql.html", "label": "12.22 English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-COPY", "sha256": "a5cec5a456a98610e98d1f1959d96ce57c8413bb392f0f5d6720fc561bb63627"}], "sections": [], "modifiers": [], "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 [, ...] ) ]", "spellings": ["\\copy"], "description": ["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."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-COPY\"><span class=\"term\"><code class=\"literal\">\\copy { <em class=\"replaceable\"><code>table</code></em> [ ( <em class=\"replaceable\"><code>column_list</code></em> ) ] } <code class=\"literal\">from</code> { <em class=\"replaceable\"><code>'filename'</code></em> | program <em class=\"replaceable\"><code>'command'</code></em> | stdin | pstdin } [ [ with ] ( <em class=\"replaceable\"><code>option</code></em> [, ...] ) ] [ where <em class=\"replaceable\"><code>condition</code></em> ]</code><br></span><span class=\"term\"><code class=\"literal\">\\copy { <em class=\"replaceable\"><code>table</code></em> [ ( <em class=\"replaceable\"><code>column_list</code></em> ) ] | ( <em class=\"replaceable\"><code>query</code></em> ) } <code class=\"literal\">to</code> { <em class=\"replaceable\"><code>'filename'</code></em> | program <em class=\"replaceable\"><code>'command'</code></em> | stdout | pstdout } [ [ with ] ( <em class=\"replaceable\"><code>option</code></em> [, ...] ) ]</code></span></dt><dd>\n<p>Performs a frontend (client) copy. This is an operation that runs an SQL <a class=\"xref\" href=\"/docs/12/sql-copy.html\" title=\"COPY\"><span class=\"refentrytitle\">COPY</span></a> command, but instead of the server reading or writing the specified file, <span class=\"application\">psql</span> 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.</p>\n<p>When <code class=\"literal\">program</code> is specified, <em class=\"replaceable\"><code>command</code></em> is executed by <span class=\"application\">psql</span> and the data passed from or to <em class=\"replaceable\"><code>command</code></em> is 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.</p>\n<p>For <code class=\"literal\">\\copy ... from stdin</code>, data rows are read from the same source that issued the command, continuing until <code class=\"literal\">\\.</code> is read or the stream reaches EOF. This option is useful for populating tables in-line within a SQL script file. For <code class=\"literal\">\\copy ... to stdout</code>, output is sent to the same place as <span class=\"application\">psql</span> command output, and the <code class=\"literal\">COPY <em class=\"replaceable\"><code>count</code></em></code> command status is not printed (since it might be confused with a data row). To read/write <span class=\"application\">psql</span>'s standard input or output regardless of the current command source or <code class=\"literal\">\\o</code> option, write <code class=\"literal\">from pstdin</code> or <code class=\"literal\">to pstdout</code>.</p>\n<p>The syntax of this command is similar to that of the SQL <a class=\"xref\" href=\"/docs/12/sql-copy.html\" title=\"COPY\"><span class=\"refentrytitle\">COPY</span></a> command. All options other than the data source/destination are as specified for <a class=\"xref\" href=\"/docs/12/sql-copy.html\" title=\"COPY\"><span class=\"refentrytitle\">COPY</span></a>. Because of this, special parsing rules apply to the <code class=\"command\">\\copy</code> meta-command. Unlike most other meta-commands, the entire remainder of the line is always taken to be the arguments of <code class=\"command\">\\copy</code>, and neither variable interpolation nor backquote expansion are performed in the arguments.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>Another way to obtain the same result as <code class=\"literal\">\\copy ... to</code> is to use the SQL <code class=\"literal\">COPY ... TO STDOUT</code> command and terminate it with <code class=\"literal\">\\g <em class=\"replaceable\"><code>filename</code></em></code> or <code class=\"literal\">\\g |<em class=\"replaceable\"><code>program</code></em></code>. Unlike <code class=\"literal\">\\copy</code>, this method allows the command to span multiple lines; also, variable interpolation and backquote expansion can be used.</p>\n</div>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>These operations are not as efficient as the SQL <code class=\"command\">COPY</code> command 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. Also, because of this pass-through method, <code class=\"literal\">\\copy ... from</code> in CSV mode will erroneously treat a <code class=\"literal\">\\.</code> data value alone on a line as an end-of-input marker.</p>\n</div>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-COPY", "comparison_data": {"modifiers": [], "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 [, ...] ) ]", "spellings": ["\\copy"], "definition": "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. When program is specified, command is executed by psql and the data passed from or to command is 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 \\. is read or the stream reaches EOF . This option is useful for populating tables in-line within a SQL script file. For \\copy ... to stdout , output is sent to the same place as psql command output, and the COPY count command 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 or \\o option, write from pstdin or to pstdout . The syntax of this command is similar to that of the SQL COPY command. All options other than the data source/destination are as specified for COPY . Because of this, special parsing rules apply to the \\copy meta-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 ... to is to use the SQL COPY ... TO STDOUT command and terminate it with \\g filename or \\g | program . Unlike \\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 COPY command 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. Also, because of this pass-through method, \\copy ... from in CSV mode will erroneously treat a \\. data value alone on a line as an end-of-input marker."}, "comparison_hash": "747f5c476e56ccc72ffdd71de19cc3baaf52ee49fa4060df47063048ff4d29a9"}, "13": {"facts": [{"label": "Client", "value": "psql 13.23"}, {"label": "Case-sensitive spelling", "value": "\\copy"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-6f-70-79/?v=13", "text": "\\copy"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\copy", "related": [{"url": "/wiki/tool/psql/?v=13", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "label": "13.23", "major": "13", "channel": "historical", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/13/postgresql-13-A4.pdf", "bytes": 13843239, "pages": 2826, "sha256": "171cc09f90936dbc1cbd503a98ff07ae72ea58ab9771ff051313f1217737799c", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/13/postgresql-13-US.pdf", "bytes": 13739572, "pages": 2984, "sha256": "48d09c6e197d9db4220f41afe83efe848a8661b1b168d3b89419751ecaf6c24d", "built_at": "2026-09-26"}}, "tree": "13", "index": "index.html", "major": "13", "pages": 1139, "release": "13.23", "source_url": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "svg_assets": 3, "source_mode": "en HTML verified against the pinned official archive", "source_sha256": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, "revision": "614ee3133270254e476c118cdf6f72af78d4e4b8bbd9b28ed9ab1e14e4e9c0f6", "evidence_kind": "English manual and source declarations", "source_sha256": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, "sources": [{"url": "/docs/13/app-psql.html#APP-PSQL-META-COMMANDS-COPY", "file": "app-psql.html", "label": "13.23 English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-COPY", "sha256": "30347083b7a58da020d968643e2479d2dfb534191d4493d454603ca53db151b0"}], "sections": [], "modifiers": [], "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 [, ...] ) ]", "spellings": ["\\copy"], "description": ["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."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-COPY\"><span class=\"term\"><code class=\"literal\">\\copy { <em class=\"replaceable\"><code>table</code></em> [ ( <em class=\"replaceable\"><code>column_list</code></em> ) ] } <code class=\"literal\">from</code> { <em class=\"replaceable\"><code>'filename'</code></em> | program <em class=\"replaceable\"><code>'command'</code></em> | stdin | pstdin } [ [ with ] ( <em class=\"replaceable\"><code>option</code></em> [, ...] ) ] [ where <em class=\"replaceable\"><code>condition</code></em> ]</code><br></span><span class=\"term\"><code class=\"literal\">\\copy { <em class=\"replaceable\"><code>table</code></em> [ ( <em class=\"replaceable\"><code>column_list</code></em> ) ] | ( <em class=\"replaceable\"><code>query</code></em> ) } <code class=\"literal\">to</code> { <em class=\"replaceable\"><code>'filename'</code></em> | program <em class=\"replaceable\"><code>'command'</code></em> | stdout | pstdout } [ [ with ] ( <em class=\"replaceable\"><code>option</code></em> [, ...] ) ]</code></span></dt><dd>\n<p>Performs a frontend (client) copy. This is an operation that runs an SQL <a class=\"xref\" href=\"/docs/13/sql-copy.html\" title=\"COPY\"><span class=\"refentrytitle\">COPY</span></a> command, but instead of the server reading or writing the specified file, <span class=\"application\">psql</span> 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.</p>\n<p>When <code class=\"literal\">program</code> is specified, <em class=\"replaceable\"><code>command</code></em> is executed by <span class=\"application\">psql</span> and the data passed from or to <em class=\"replaceable\"><code>command</code></em> is 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.</p>\n<p>For <code class=\"literal\">\\copy ... from stdin</code>, data rows are read from the same source that issued the command, continuing until <code class=\"literal\">\\.</code> is read or the stream reaches EOF. This option is useful for populating tables in-line within a SQL script file. For <code class=\"literal\">\\copy ... to stdout</code>, output is sent to the same place as <span class=\"application\">psql</span> command output, and the <code class=\"literal\">COPY <em class=\"replaceable\"><code>count</code></em></code> command status is not printed (since it might be confused with a data row). To read/write <span class=\"application\">psql</span>'s standard input or output regardless of the current command source or <code class=\"literal\">\\o</code> option, write <code class=\"literal\">from pstdin</code> or <code class=\"literal\">to pstdout</code>.</p>\n<p>The syntax of this command is similar to that of the SQL <a class=\"xref\" href=\"/docs/13/sql-copy.html\" title=\"COPY\"><span class=\"refentrytitle\">COPY</span></a> command. All options other than the data source/destination are as specified for <a class=\"xref\" href=\"/docs/13/sql-copy.html\" title=\"COPY\"><span class=\"refentrytitle\">COPY</span></a>. Because of this, special parsing rules apply to the <code class=\"command\">\\copy</code> meta-command. Unlike most other meta-commands, the entire remainder of the line is always taken to be the arguments of <code class=\"command\">\\copy</code>, and neither variable interpolation nor backquote expansion are performed in the arguments.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>Another way to obtain the same result as <code class=\"literal\">\\copy ... to</code> is to use the SQL <code class=\"literal\">COPY ... TO STDOUT</code> command and terminate it with <code class=\"literal\">\\g <em class=\"replaceable\"><code>filename</code></em></code> or <code class=\"literal\">\\g |<em class=\"replaceable\"><code>program</code></em></code>. Unlike <code class=\"literal\">\\copy</code>, this method allows the command to span multiple lines; also, variable interpolation and backquote expansion can be used.</p>\n</div>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>These operations are not as efficient as the SQL <code class=\"command\">COPY</code> command 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. Also, because of this pass-through method, <code class=\"literal\">\\copy ... from</code> in CSV mode will erroneously treat a <code class=\"literal\">\\.</code> data value alone on a line as an end-of-input marker.</p>\n</div>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-COPY", "comparison_data": {"modifiers": [], "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 [, ...] ) ]", "spellings": ["\\copy"], "definition": "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. When program is specified, command is executed by psql and the data passed from or to command is 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 \\. is read or the stream reaches EOF . This option is useful for populating tables in-line within a SQL script file. For \\copy ... to stdout , output is sent to the same place as psql command output, and the COPY count command 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 or \\o option, write from pstdin or to pstdout . The syntax of this command is similar to that of the SQL COPY command. All options other than the data source/destination are as specified for COPY . Because of this, special parsing rules apply to the \\copy meta-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 ... to is to use the SQL COPY ... TO STDOUT command and terminate it with \\g filename or \\g | program . Unlike \\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 COPY command 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. Also, because of this pass-through method, \\copy ... from in CSV mode will erroneously treat a \\. data value alone on a line as an end-of-input marker."}, "comparison_hash": "747f5c476e56ccc72ffdd71de19cc3baaf52ee49fa4060df47063048ff4d29a9"}, "14": {"facts": [{"label": "Client", "value": "psql 14.24"}, {"label": "Case-sensitive spelling", "value": "\\copy"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-6f-70-79/?v=14", "text": "\\copy"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\copy", "related": [{"url": "/wiki/tool/psql/?v=14", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "label": "14.24", "major": "14", "channel": "stable", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/14/postgresql-14-A4.pdf", "bytes": 14354704, "pages": 2944, "sha256": "8bc6b9dd7b246888bb77f0a5e8c39a2eae52e9926569832669c7d1600becb27c", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/14/postgresql-14-US.pdf", "bytes": 14242178, "pages": 3102, "sha256": "b7ecb5a5f62d8b9f73a69e25a7d26ba285373bc53168a553bff7b77955506db4", "built_at": "2026-09-26"}}, "tree": "14", "index": "index.html", "major": "14", "pages": 1158, "release": "14.24", "source_url": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "svg_assets": 3, "source_mode": "en HTML verified against the pinned official archive", "source_sha256": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, "revision": "588700d46356d8837c77c7c0a4e71e645fe6535983b8f1830aa8f2e4e41c40ae", "evidence_kind": "English manual and source declarations", "source_sha256": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, "sources": [{"url": "/docs/14/app-psql.html#APP-PSQL-META-COMMANDS-COPY", "file": "app-psql.html", "label": "14.24 English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-COPY", "sha256": "8da20abaee171c53c05658cfb2580dea645070f40bad6b46a845d710ad74c3ae"}], "sections": [], "modifiers": [], "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 [, ...] ) ]", "spellings": ["\\copy"], "description": ["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."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-COPY\"><span class=\"term\"><code class=\"literal\">\\copy { <em class=\"replaceable\"><code>table</code></em> [ ( <em class=\"replaceable\"><code>column_list</code></em> ) ] } <code class=\"literal\">from</code> { <em class=\"replaceable\"><code>'filename'</code></em> | program <em class=\"replaceable\"><code>'command'</code></em> | stdin | pstdin } [ [ with ] ( <em class=\"replaceable\"><code>option</code></em> [, ...] ) ] [ where <em class=\"replaceable\"><code>condition</code></em> ]</code><br></span><span class=\"term\"><code class=\"literal\">\\copy { <em class=\"replaceable\"><code>table</code></em> [ ( <em class=\"replaceable\"><code>column_list</code></em> ) ] | ( <em class=\"replaceable\"><code>query</code></em> ) } <code class=\"literal\">to</code> { <em class=\"replaceable\"><code>'filename'</code></em> | program <em class=\"replaceable\"><code>'command'</code></em> | stdout | pstdout } [ [ with ] ( <em class=\"replaceable\"><code>option</code></em> [, ...] ) ]</code></span></dt><dd>\n<p>Performs a frontend (client) copy. This is an operation that runs an SQL <a class=\"link\" href=\"/docs/14/sql-copy.html\" title=\"COPY\"><code class=\"command\">COPY</code></a> command, but instead of the server reading or writing the specified file, <span class=\"application\">psql</span> 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.</p>\n<p>When <code class=\"literal\">program</code> is specified, <em class=\"replaceable\"><code>command</code></em> is executed by <span class=\"application\">psql</span> and the data passed from or to <em class=\"replaceable\"><code>command</code></em> is 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.</p>\n<p>For <code class=\"literal\">\\copy ... from stdin</code>, data rows are read from the same source that issued the command, continuing until <code class=\"literal\">\\.</code> is read or the stream reaches EOF. This option is useful for populating tables in-line within an SQL script file. For <code class=\"literal\">\\copy ... to stdout</code>, output is sent to the same place as <span class=\"application\">psql</span> command output, and the <code class=\"literal\">COPY <em class=\"replaceable\"><code>count</code></em></code> command status is not printed (since it might be confused with a data row). To read/write <span class=\"application\">psql</span>'s standard input or output regardless of the current command source or <code class=\"literal\">\\o</code> option, write <code class=\"literal\">from pstdin</code> or <code class=\"literal\">to pstdout</code>.</p>\n<p>The syntax of this command is similar to that of the SQL <a class=\"link\" href=\"/docs/14/sql-copy.html\" title=\"COPY\"><code class=\"command\">COPY</code></a> command. All options other than the data source/destination are as specified for <code class=\"command\">COPY</code>. Because of this, special parsing rules apply to the <code class=\"command\">\\copy</code> meta-command. Unlike most other meta-commands, the entire remainder of the line is always taken to be the arguments of <code class=\"command\">\\copy</code>, and neither variable interpolation nor backquote expansion are performed in the arguments.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>Another way to obtain the same result as <code class=\"literal\">\\copy ... to</code> is to use the SQL <code class=\"literal\">COPY ... TO STDOUT</code> command and terminate it with <code class=\"literal\">\\g <em class=\"replaceable\"><code>filename</code></em></code> or <code class=\"literal\">\\g |<em class=\"replaceable\"><code>program</code></em></code>. Unlike <code class=\"literal\">\\copy</code>, this method allows the command to span multiple lines; also, variable interpolation and backquote expansion can be used.</p>\n</div>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>These operations are not as efficient as the SQL <code class=\"command\">COPY</code> command 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. Also, because of this pass-through method, <code class=\"literal\">\\copy ... from</code> in CSV mode will erroneously treat a <code class=\"literal\">\\.</code> data value alone on a line as an end-of-input marker.</p>\n</div>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-COPY", "comparison_data": {"modifiers": [], "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 [, ...] ) ]", "spellings": ["\\copy"], "definition": "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. When program is specified, command is executed by psql and the data passed from or to command is 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 \\. 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 the COPY count command 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 or \\o option, write from pstdin or to pstdout . The syntax of this command is similar to that of the SQL COPY command. All options other than the data source/destination are as specified for COPY . Because of this, special parsing rules apply to the \\copy meta-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 ... to is to use the SQL COPY ... TO STDOUT command and terminate it with \\g filename or \\g | program . Unlike \\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 COPY command 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. Also, because of this pass-through method, \\copy ... from in CSV mode will erroneously treat a \\. data value alone on a line as an end-of-input marker."}, "comparison_hash": "3bdd142a059fbcf065c73e7fc640960c3f4fca256e61cf83232c7cf8412b2cb7"}, "15": {"facts": [{"label": "Client", "value": "psql 15.19"}, {"label": "Case-sensitive spelling", "value": "\\copy"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-6f-70-79/?v=15", "text": "\\copy"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\copy", "related": [{"url": "/wiki/tool/psql/?v=15", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "label": "15.19", "major": "15", "channel": "stable", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/15/postgresql-15-A4.pdf", "bytes": 14609140, "pages": 2987, "sha256": "66228564a4d16efb47d6a914085716ecfe22ca1566db56bc7c3d82f790646d72", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/15/postgresql-15-US.pdf", "bytes": 14495690, "pages": 3153, "sha256": "645a498c2390d47a6223ec74770631185807a19c484edb0fc5a295d9f460bc02", "built_at": "2026-09-26"}}, "tree": "15", "index": "index.html", "major": "15", "pages": 1168, "release": "15.19", "source_url": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "svg_assets": 3, "source_mode": "en HTML verified against the pinned official archive", "source_sha256": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, "revision": "6af958c6520151fc7697d56e0616b03fb00522c4568158674d452ae0644ba545", "evidence_kind": "English manual and source declarations", "source_sha256": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, "sources": [{"url": "/docs/15/app-psql.html#APP-PSQL-META-COMMANDS-COPY", "file": "app-psql.html", "label": "15.19 English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-COPY", "sha256": "cb07228edb4914a53530afca316fd700a250cc062af2d5a74d24add93afbd0c8"}], "sections": [], "modifiers": [], "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 [, ...] ) ]", "spellings": ["\\copy"], "description": ["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."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-COPY\"><span class=\"term\"><code class=\"literal\">\\copy { <em class=\"replaceable\"><code>table</code></em> [ ( <em class=\"replaceable\"><code>column_list</code></em> ) ] } <code class=\"literal\">from</code> { <em class=\"replaceable\"><code>'filename'</code></em> | program <em class=\"replaceable\"><code>'command'</code></em> | stdin | pstdin } [ [ with ] ( <em class=\"replaceable\"><code>option</code></em> [, ...] ) ] [ where <em class=\"replaceable\"><code>condition</code></em> ]</code><br></span><span class=\"term\"><code class=\"literal\">\\copy { <em class=\"replaceable\"><code>table</code></em> [ ( <em class=\"replaceable\"><code>column_list</code></em> ) ] | ( <em class=\"replaceable\"><code>query</code></em> ) } <code class=\"literal\">to</code> { <em class=\"replaceable\"><code>'filename'</code></em> | program <em class=\"replaceable\"><code>'command'</code></em> | stdout | pstdout } [ [ with ] ( <em class=\"replaceable\"><code>option</code></em> [, ...] ) ]</code></span></dt><dd>\n<p>Performs a frontend (client) copy. This is an operation that runs an SQL <a class=\"link\" href=\"/docs/15/sql-copy.html\" title=\"COPY\"><code class=\"command\">COPY</code></a> command, but instead of the server reading or writing the specified file, <span class=\"application\">psql</span> 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.</p>\n<p>When <code class=\"literal\">program</code> is specified, <em class=\"replaceable\"><code>command</code></em> is executed by <span class=\"application\">psql</span> and the data passed from or to <em class=\"replaceable\"><code>command</code></em> is 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.</p>\n<p>For <code class=\"literal\">\\copy ... from stdin</code>, data rows are read from the same source that issued the command, continuing until <code class=\"literal\">\\.</code> is read or the stream reaches EOF. This option is useful for populating tables in-line within an SQL script file. For <code class=\"literal\">\\copy ... to stdout</code>, output is sent to the same place as <span class=\"application\">psql</span> command output, and the <code class=\"literal\">COPY <em class=\"replaceable\"><code>count</code></em></code> command status is not printed (since it might be confused with a data row). To read/write <span class=\"application\">psql</span>'s standard input or output regardless of the current command source or <code class=\"literal\">\\o</code> option, write <code class=\"literal\">from pstdin</code> or <code class=\"literal\">to pstdout</code>.</p>\n<p>The syntax of this command is similar to that of the SQL <a class=\"link\" href=\"/docs/15/sql-copy.html\" title=\"COPY\"><code class=\"command\">COPY</code></a> command. All options other than the data source/destination are as specified for <code class=\"command\">COPY</code>. Because of this, special parsing rules apply to the <code class=\"command\">\\copy</code> meta-command. Unlike most other meta-commands, the entire remainder of the line is always taken to be the arguments of <code class=\"command\">\\copy</code>, and neither variable interpolation nor backquote expansion are performed in the arguments.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>Another way to obtain the same result as <code class=\"literal\">\\copy ... to</code> is to use the SQL <code class=\"literal\">COPY ... TO STDOUT</code> command and terminate it with <code class=\"literal\">\\g <em class=\"replaceable\"><code>filename</code></em></code> or <code class=\"literal\">\\g |<em class=\"replaceable\"><code>program</code></em></code>. Unlike <code class=\"literal\">\\copy</code>, this method allows the command to span multiple lines; also, variable interpolation and backquote expansion can be used.</p>\n</div>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>These operations are not as efficient as the SQL <code class=\"command\">COPY</code> command 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. Also, because of this pass-through method, <code class=\"literal\">\\copy ... from</code> in CSV mode will erroneously treat a <code class=\"literal\">\\.</code> data value alone on a line as an end-of-input marker.</p>\n</div>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-COPY", "comparison_data": {"modifiers": [], "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 [, ...] ) ]", "spellings": ["\\copy"], "definition": "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. When program is specified, command is executed by psql and the data passed from or to command is 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 \\. 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 the COPY count command 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 or \\o option, write from pstdin or to pstdout . The syntax of this command is similar to that of the SQL COPY command. All options other than the data source/destination are as specified for COPY . Because of this, special parsing rules apply to the \\copy meta-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 ... to is to use the SQL COPY ... TO STDOUT command and terminate it with \\g filename or \\g | program . Unlike \\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 COPY command 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. Also, because of this pass-through method, \\copy ... from in CSV mode will erroneously treat a \\. data value alone on a line as an end-of-input marker."}, "comparison_hash": "3bdd142a059fbcf065c73e7fc640960c3f4fca256e61cf83232c7cf8412b2cb7"}, "16": {"facts": [{"label": "Client", "value": "psql 16.15"}, {"label": "Case-sensitive spelling", "value": "\\copy"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-6f-70-79/?v=16", "text": "\\copy"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\copy", "related": [{"url": "/wiki/tool/psql/?v=16", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "label": "16.15", "major": "16", "channel": "stable", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/16/postgresql-16-A4.pdf", "bytes": 15282337, "pages": 3055, "sha256": "4bb6c1f63deedac98736d8c4c7bc0fad0ac24e85b07e21ee10411872f06afd06", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/16/postgresql-16-US.pdf", "bytes": 15164148, "pages": 3220, "sha256": "5b6b6166c89991199e144bb0ae34c17a5f29826251dbf19db1abc0df3a3e771b", "built_at": "2026-09-26"}}, "tree": "16", "index": "index.html", "major": "16", "pages": 1169, "release": "16.15", "source_url": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "svg_assets": 3, "source_mode": "en HTML verified against the pinned official archive", "source_sha256": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, "revision": "3c21e58b35318021716440e67bb8bafd392b6a2b965a244d90e9e33c99e0bdef", "evidence_kind": "English manual and source declarations", "source_sha256": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, "sources": [{"url": "/docs/16/app-psql.html#APP-PSQL-META-COMMANDS-COPY", "file": "app-psql.html", "label": "16.15 English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-COPY", "sha256": "add25957a1dfc97db721f2958782be186ab90dc0f0a47c4b720b2b6c26172493"}], "sections": [], "modifiers": [], "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 [, ...] ) ]", "spellings": ["\\copy"], "description": ["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."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-COPY\"><span class=\"term\"><code class=\"literal\">\\copy { <em class=\"replaceable\"><code>table</code></em> [ ( <em class=\"replaceable\"><code>column_list</code></em> ) ] } <code class=\"literal\">from</code> { <em class=\"replaceable\"><code>'filename'</code></em> | program <em class=\"replaceable\"><code>'command'</code></em> | stdin | pstdin } [ [ with ] ( <em class=\"replaceable\"><code>option</code></em> [, ...] ) ] [ where <em class=\"replaceable\"><code>condition</code></em> ]</code><br></span><span class=\"term\"><code class=\"literal\">\\copy { <em class=\"replaceable\"><code>table</code></em> [ ( <em class=\"replaceable\"><code>column_list</code></em> ) ] | ( <em class=\"replaceable\"><code>query</code></em> ) } <code class=\"literal\">to</code> { <em class=\"replaceable\"><code>'filename'</code></em> | program <em class=\"replaceable\"><code>'command'</code></em> | stdout | pstdout } [ [ with ] ( <em class=\"replaceable\"><code>option</code></em> [, ...] ) ]</code></span> </dt><dd>\n<p>Performs a frontend (client) copy. This is an operation that runs an SQL <a class=\"link\" href=\"/docs/16/sql-copy.html\" title=\"COPY\"><code class=\"command\">COPY</code></a> command, but instead of the server reading or writing the specified file, <span class=\"application\">psql</span> 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.</p>\n<p>When <code class=\"literal\">program</code> is specified, <em class=\"replaceable\"><code>command</code></em> is executed by <span class=\"application\">psql</span> and the data passed from or to <em class=\"replaceable\"><code>command</code></em> is 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.</p>\n<p>For <code class=\"literal\">\\copy ... from stdin</code>, data rows are read from the same source that issued the command, continuing until <code class=\"literal\">\\.</code> is read or the stream reaches EOF. This option is useful for populating tables in-line within an SQL script file. For <code class=\"literal\">\\copy ... to stdout</code>, output is sent to the same place as <span class=\"application\">psql</span> command output, and the <code class=\"literal\">COPY <em class=\"replaceable\"><code>count</code></em></code> command status is not printed (since it might be confused with a data row). To read/write <span class=\"application\">psql</span>'s standard input or output regardless of the current command source or <code class=\"literal\">\\o</code> option, write <code class=\"literal\">from pstdin</code> or <code class=\"literal\">to pstdout</code>.</p>\n<p>The syntax of this command is similar to that of the SQL <a class=\"link\" href=\"/docs/16/sql-copy.html\" title=\"COPY\"><code class=\"command\">COPY</code></a> command. All options other than the data source/destination are as specified for <code class=\"command\">COPY</code>. Because of this, special parsing rules apply to the <code class=\"command\">\\copy</code> meta-command. Unlike most other meta-commands, the entire remainder of the line is always taken to be the arguments of <code class=\"command\">\\copy</code>, and neither variable interpolation nor backquote expansion are performed in the arguments.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>Another way to obtain the same result as <code class=\"literal\">\\copy ... to</code> is to use the SQL <code class=\"literal\">COPY ... TO STDOUT</code> command and terminate it with <code class=\"literal\">\\g <em class=\"replaceable\"><code>filename</code></em></code> or <code class=\"literal\">\\g |<em class=\"replaceable\"><code>program</code></em></code>. Unlike <code class=\"literal\">\\copy</code>, this method allows the command to span multiple lines; also, variable interpolation and backquote expansion can be used.</p>\n</div>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>These operations are not as efficient as the SQL <code class=\"command\">COPY</code> command 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. Also, because of this pass-through method, <code class=\"literal\">\\copy ... from</code> in CSV mode will erroneously treat a <code class=\"literal\">\\.</code> data value alone on a line as an end-of-input marker.</p>\n</div>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-COPY", "comparison_data": {"modifiers": [], "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 [, ...] ) ]", "spellings": ["\\copy"], "definition": "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. When program is specified, command is executed by psql and the data passed from or to command is 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 \\. 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 the COPY count command 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 or \\o option, write from pstdin or to pstdout . The syntax of this command is similar to that of the SQL COPY command. All options other than the data source/destination are as specified for COPY . Because of this, special parsing rules apply to the \\copy meta-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 ... to is to use the SQL COPY ... TO STDOUT command and terminate it with \\g filename or \\g | program . Unlike \\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 COPY command 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. Also, because of this pass-through method, \\copy ... from in CSV mode will erroneously treat a \\. data value alone on a line as an end-of-input marker."}, "comparison_hash": "3bdd142a059fbcf065c73e7fc640960c3f4fca256e61cf83232c7cf8412b2cb7"}, "17": {"facts": [{"label": "Client", "value": "psql 17.11"}, {"label": "Case-sensitive spelling", "value": "\\copy"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-6f-70-79/?v=17", "text": "\\copy"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\copy", "related": [{"url": "/wiki/tool/psql/?v=17", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "label": "17.11", "major": "17", "channel": "stable", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/17/postgresql-17-A4.pdf", "bytes": 15521293, "pages": 3099, "sha256": "1991354df0dc89e70ec39328c28988ef8b19c6a93671dab3893650b63e9f4e36", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/17/postgresql-17-US.pdf", "bytes": 15398150, "pages": 3270, "sha256": "07696c8f38abf31babf22d2db337093936e7c472d2af36d050b000c49bbcf52c", "built_at": "2026-09-26"}}, "tree": "17", "index": "index.html", "major": "17", "pages": 1143, "release": "17.11", "source_url": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "svg_assets": 3, "source_mode": "en SGML built with pinned official archive", "source_sha256": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, "revision": "58419c9b0dd42cb34c8d53695bb025a7e582edf55ccd4c5bcb1c2c7c71a37487", "evidence_kind": "English manual and source declarations", "source_sha256": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, "sources": [{"url": "/docs/17/app-psql.html#APP-PSQL-META-COMMANDS-COPY", "file": "app-psql.html", "label": "17.11 English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-COPY", "sha256": "04c77661f1c96a64e91a27313542c34aff0c7d2a94e350ed98c6f9f35700629b"}], "sections": [], "modifiers": [], "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 [, ...] ) ]", "spellings": ["\\copy"], "description": ["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."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-COPY\"><span class=\"term\"><code class=\"literal\">\\copy { <em class=\"replaceable\"><code>table</code></em> [ ( <em class=\"replaceable\"><code>column_list</code></em> ) ] } <code class=\"literal\">from</code> { <em class=\"replaceable\"><code>'filename'</code></em> | program <em class=\"replaceable\"><code>'command'</code></em> | stdin | pstdin } [ [ with ] ( <em class=\"replaceable\"><code>option</code></em> [, ...] ) ] [ where <em class=\"replaceable\"><code>condition</code></em> ]</code><br></span><span class=\"term\"><code class=\"literal\">\\copy { <em class=\"replaceable\"><code>table</code></em> [ ( <em class=\"replaceable\"><code>column_list</code></em> ) ] | ( <em class=\"replaceable\"><code>query</code></em> ) } <code class=\"literal\">to</code> { <em class=\"replaceable\"><code>'filename'</code></em> | program <em class=\"replaceable\"><code>'command'</code></em> | stdout | pstdout } [ [ with ] ( <em class=\"replaceable\"><code>option</code></em> [, ...] ) ]</code></span> </dt><dd>\n<p>Performs a frontend (client) copy. This is an operation that runs an SQL <a class=\"link\" href=\"/docs/17/sql-copy.html\" title=\"COPY\"><code class=\"command\">COPY</code></a> command, but instead of the server reading or writing the specified file, <span class=\"application\">psql</span> 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.</p>\n<p>When <code class=\"literal\">program</code> is specified, <em class=\"replaceable\"><code>command</code></em> is executed by <span class=\"application\">psql</span> and the data passed from or to <em class=\"replaceable\"><code>command</code></em> is 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.</p>\n<p>For <code class=\"literal\">\\copy ... from stdin</code>, data rows are read from the same source that issued the command, continuing until <code class=\"literal\">\\.</code> is read or the stream reaches EOF. This option is useful for populating tables in-line within an SQL script file. For <code class=\"literal\">\\copy ... to stdout</code>, output is sent to the same place as <span class=\"application\">psql</span> command output, and the <code class=\"literal\">COPY <em class=\"replaceable\"><code>count</code></em></code> command status is not printed (since it might be confused with a data row). To read/write <span class=\"application\">psql</span>'s standard input or output regardless of the current command source or <code class=\"literal\">\\o</code> option, write <code class=\"literal\">from pstdin</code> or <code class=\"literal\">to pstdout</code>.</p>\n<p>The syntax of this command is similar to that of the SQL <a class=\"link\" href=\"/docs/17/sql-copy.html\" title=\"COPY\"><code class=\"command\">COPY</code></a> command. All options other than the data source/destination are as specified for <code class=\"command\">COPY</code>. Because of this, special parsing rules apply to the <code class=\"command\">\\copy</code> meta-command. Unlike most other meta-commands, the entire remainder of the line is always taken to be the arguments of <code class=\"command\">\\copy</code>, and neither variable interpolation nor backquote expansion are performed in the arguments.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>Another way to obtain the same result as <code class=\"literal\">\\copy ... to</code> is to use the SQL <code class=\"literal\">COPY ... TO STDOUT</code> command and terminate it with <code class=\"literal\">\\g <em class=\"replaceable\"><code>filename</code></em></code> or <code class=\"literal\">\\g |<em class=\"replaceable\"><code>program</code></em></code>. Unlike <code class=\"literal\">\\copy</code>, this method allows the command to span multiple lines; also, variable interpolation and backquote expansion can be used.</p>\n</div>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>These operations are not as efficient as the SQL <code class=\"command\">COPY</code> command 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. Also, because of this pass-through method, <code class=\"literal\">\\copy ... from</code> in CSV mode will erroneously treat a <code class=\"literal\">\\.</code> data value alone on a line as an end-of-input marker.</p>\n</div>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-COPY", "comparison_data": {"modifiers": [], "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 [, ...] ) ]", "spellings": ["\\copy"], "definition": "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. When program is specified, command is executed by psql and the data passed from or to command is 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 \\. 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 the COPY count command 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 or \\o option, write from pstdin or to pstdout . The syntax of this command is similar to that of the SQL COPY command. All options other than the data source/destination are as specified for COPY . Because of this, special parsing rules apply to the \\copy meta-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 ... to is to use the SQL COPY ... TO STDOUT command and terminate it with \\g filename or \\g | program . Unlike \\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 COPY command 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. Also, because of this pass-through method, \\copy ... from in CSV mode will erroneously treat a \\. data value alone on a line as an end-of-input marker."}, "comparison_hash": "3bdd142a059fbcf065c73e7fc640960c3f4fca256e61cf83232c7cf8412b2cb7"}, "18": {"facts": [{"label": "Client", "value": "psql 18.6"}, {"label": "Case-sensitive spelling", "value": "\\copy"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-6f-70-79/?v=18", "text": "\\copy"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\copy", "related": [{"url": "/wiki/tool/psql/?v=18", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/18/postgresql-18-A4.pdf", "bytes": 15865106, "pages": 3154, "sha256": "19512c405da53f9f7fcf0abba359223aa65f021be025bf3411381918f92e3190", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/18/postgresql-18-US.pdf", "bytes": 15748059, "pages": 3328, "sha256": "facbe6c229e598b872d3d98bef53308f46e06746006fa4590de9a7de9dd46319", "built_at": "2026-09-26"}}, "tree": "18", "index": "index.html", "major": "18", "pages": 1148, "release": "18.6", "source_url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "svg_assets": 3, "source_mode": "en SGML built with pinned official archive", "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "revision": "ee8d1a3612338fd9adf250730cb640fcc5233b5491337cc00a316a44e3a0b9f8", "evidence_kind": "English manual and source declarations", "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "sources": [{"url": "/docs/18/app-psql.html#APP-PSQL-META-COMMANDS-COPY", "file": "app-psql.html", "label": "18.6 English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-COPY", "sha256": "fa2a1d39294b8854318e82e93f71272c645ed88150ecc2786c28902c3f32782c"}], "sections": [], "modifiers": [], "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 [, ...] ) ]", "spellings": ["\\copy"], "description": ["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."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-COPY\"><span class=\"term\"><code class=\"literal\">\\copy { <em class=\"replaceable\"><code>table</code></em> [ ( <em class=\"replaceable\"><code>column_list</code></em> ) ] } <code class=\"literal\">from</code> { <em class=\"replaceable\"><code>'filename'</code></em> | program <em class=\"replaceable\"><code>'command'</code></em> | stdin | pstdin } [ [ with ] ( <em class=\"replaceable\"><code>option</code></em> [, ...] ) ] [ where <em class=\"replaceable\"><code>condition</code></em> ]</code><br></span><span class=\"term\"><code class=\"literal\">\\copy { <em class=\"replaceable\"><code>table</code></em> [ ( <em class=\"replaceable\"><code>column_list</code></em> ) ] | ( <em class=\"replaceable\"><code>query</code></em> ) } <code class=\"literal\">to</code> { <em class=\"replaceable\"><code>'filename'</code></em> | program <em class=\"replaceable\"><code>'command'</code></em> | stdout | pstdout } [ [ with ] ( <em class=\"replaceable\"><code>option</code></em> [, ...] ) ]</code></span> </dt><dd>\n<p>Performs a frontend (client) copy. This is an operation that runs an SQL <a class=\"link\" href=\"/docs/18/sql-copy.html\" title=\"COPY\"><code class=\"command\">COPY</code></a> command, but instead of the server reading or writing the specified file, <span class=\"application\">psql</span> 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.</p>\n<p>When <code class=\"literal\">program</code> is specified, <em class=\"replaceable\"><code>command</code></em> is executed by <span class=\"application\">psql</span> and the data passed from or to <em class=\"replaceable\"><code>command</code></em> is 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.</p>\n<p>For <code class=\"literal\">\\copy ... from stdin</code>, data rows are read from the same source that issued the command, continuing until a line containing only <code class=\"literal\">\\.</code> is read or the stream reaches EOF. This option is useful for populating tables in-line within an SQL script file. For <code class=\"literal\">\\copy ... to stdout</code>, output is sent to the same place as <span class=\"application\">psql</span> command output, and the <code class=\"literal\">COPY <em class=\"replaceable\"><code>count</code></em></code> command status is not printed (since it might be confused with a data row). To read/write <span class=\"application\">psql</span>'s standard input or output regardless of the current command source or <code class=\"literal\">\\o</code> option, write <code class=\"literal\">from pstdin</code> or <code class=\"literal\">to pstdout</code>.</p>\n<p>The syntax of this command is similar to that of the SQL <a class=\"link\" href=\"/docs/18/sql-copy.html\" title=\"COPY\"><code class=\"command\">COPY</code></a> command. All options other than the data source/destination are as specified for <code class=\"command\">COPY</code>. Because of this, special parsing rules apply to the <code class=\"command\">\\copy</code> meta-command. Unlike most other meta-commands, the entire remainder of the line is always taken to be the arguments of <code class=\"command\">\\copy</code>, and neither variable interpolation nor backquote expansion are performed in the arguments.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>Another way to obtain the same result as <code class=\"literal\">\\copy ... to</code> is to use the SQL <code class=\"literal\">COPY ... TO STDOUT</code> command and terminate it with <code class=\"literal\">\\g <em class=\"replaceable\"><code>filename</code></em></code> or <code class=\"literal\">\\g |<em class=\"replaceable\"><code>program</code></em></code>. Unlike <code class=\"literal\">\\copy</code>, this method allows the command to span multiple lines; also, variable interpolation and backquote expansion can be used.</p>\n</div>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>These operations are not as efficient as the SQL <code class=\"command\">COPY</code> command 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.</p>\n</div>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-COPY", "comparison_data": {"modifiers": [], "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 [, ...] ) ]", "spellings": ["\\copy"], "definition": "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. When program is specified, command is executed by psql and the data passed from or to command is 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 the COPY count command 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 or \\o option, write from pstdin or to pstdout . The syntax of this command is similar to that of the SQL COPY command. All options other than the data source/destination are as specified for COPY . Because of this, special parsing rules apply to the \\copy meta-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 ... to is to use the SQL COPY ... TO STDOUT command and terminate it with \\g filename or \\g | program . Unlike \\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 COPY command 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."}, "comparison_hash": "e071767018f7d11f024bce4d06b14a4d3f8ba780a74d277363f0d263427ccc48"}, "19": {"facts": [{"label": "Client", "value": "psql 19beta4"}, {"label": "Case-sensitive spelling", "value": "\\copy"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-6f-70-79/?v=19", "text": "\\copy"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\copy", "related": [{"url": "/wiki/tool/psql/?v=19", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v19beta4/postgresql-19beta4.tar.bz2", "label": "19beta4", "major": "19", "channel": "preview", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/19/postgresql-19-A4.pdf", "bytes": 16064841, "pages": 3052, "sha256": "4dd099e4125c591128fc5f3ebd02178dc24781f9e5ae629f96d67c4c8547427b", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/19/postgresql-19-US.pdf", "bytes": 15974616, "pages": 3225, "sha256": "61971fa857f0956d47341a0388fa6af9ae10acf691d4b2fc009007d384b0342b", "built_at": "2026-09-26"}}, "tree": "19", "index": "index.html", "major": "19", "pages": 1155, "release": "19beta4", "source_url": "https://ftp.postgresql.org/pub/source/v19beta4/postgresql-19beta4.tar.bz2", "svg_assets": 5, "source_mode": "en SGML built with pinned official archive", "source_sha256": "83157ee9c599d03b2f7a3d73ef3a56ec24e0e79cc2b3501a64d1364f56398c86"}, "revision": "1bbbbf4133d426f0e4304010688d2984c30fb67df0cc3a61b3e37eb3f6f37833", "evidence_kind": "English manual and source declarations", "source_sha256": "83157ee9c599d03b2f7a3d73ef3a56ec24e0e79cc2b3501a64d1364f56398c86"}, "sources": [{"url": "/docs/19/app-psql.html#APP-PSQL-META-COMMANDS-COPY", "file": "app-psql.html", "label": "19beta4 English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-COPY", "sha256": "312975c12d6e4d62aeebcb5e98e7ca795c6d07ecb743b4bc64403dc42bc2a6e9"}], "sections": [], "modifiers": [], "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 [, ...] ) ]", "spellings": ["\\copy"], "description": ["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."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-COPY\"><span class=\"term\"><code class=\"literal\">\\copy { <em class=\"replaceable\"><code>table</code></em> [ ( <em class=\"replaceable\"><code>column_list</code></em> ) ] } <code class=\"literal\">from</code> { <em class=\"replaceable\"><code>'filename'</code></em> | program <em class=\"replaceable\"><code>'command'</code></em> | stdin | pstdin } [ [ with ] ( <em class=\"replaceable\"><code>option</code></em> [, ...] ) ] [ where <em class=\"replaceable\"><code>condition</code></em> ]</code><br></span><span class=\"term\"><code class=\"literal\">\\copy { <em class=\"replaceable\"><code>table</code></em> [ ( <em class=\"replaceable\"><code>column_list</code></em> ) ] | ( <em class=\"replaceable\"><code>query</code></em> ) } <code class=\"literal\">to</code> { <em class=\"replaceable\"><code>'filename'</code></em> | program <em class=\"replaceable\"><code>'command'</code></em> | stdout | pstdout } [ [ with ] ( <em class=\"replaceable\"><code>option</code></em> [, ...] ) ]</code></span> </dt><dd>\n<p>Performs a frontend (client) copy. This is an operation that runs an SQL <a class=\"link\" href=\"/docs/19/sql-copy.html\" title=\"COPY\"><code class=\"command\">COPY</code></a> command, but instead of the server reading or writing the specified file, <span class=\"application\">psql</span> 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.</p>\n<p>When <code class=\"literal\">program</code> is specified, <em class=\"replaceable\"><code>command</code></em> is executed by <span class=\"application\">psql</span> and the data passed from or to <em class=\"replaceable\"><code>command</code></em> is 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.</p>\n<p>For <code class=\"literal\">\\copy ... from stdin</code>, data rows are read from the same source that issued the command, continuing until a line containing only <code class=\"literal\">\\.</code> is read or the stream reaches EOF. This option is useful for populating tables in-line within an SQL script file. For <code class=\"literal\">\\copy ... to stdout</code>, output is sent to the same place as <span class=\"application\">psql</span> command output, and the <code class=\"literal\">COPY <em class=\"replaceable\"><code>count</code></em></code> command status is not printed (since it might be confused with a data row). To read/write <span class=\"application\">psql</span>'s standard input or output regardless of the current command source or <code class=\"literal\">\\o</code> option, write <code class=\"literal\">from pstdin</code> or <code class=\"literal\">to pstdout</code>.</p>\n<p>The syntax of this command is similar to that of the SQL <a class=\"link\" href=\"/docs/19/sql-copy.html\" title=\"COPY\"><code class=\"command\">COPY</code></a> command. All options other than the data source/destination are as specified for <code class=\"command\">COPY</code>. Because of this, special parsing rules apply to the <code class=\"command\">\\copy</code> meta-command. Unlike most other meta-commands, the entire remainder of the line is always taken to be the arguments of <code class=\"command\">\\copy</code>, and neither variable interpolation nor backquote expansion are performed in the arguments.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>Another way to obtain the same result as <code class=\"literal\">\\copy ... to</code> is to use the SQL <code class=\"literal\">COPY ... TO STDOUT</code> command and terminate it with <code class=\"literal\">\\g <em class=\"replaceable\"><code>filename</code></em></code> or <code class=\"literal\">\\g |<em class=\"replaceable\"><code>program</code></em></code>. Unlike <code class=\"literal\">\\copy</code>, this method allows the command to span multiple lines; also, variable interpolation and backquote expansion can be used.</p>\n</div>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>These operations are not as efficient as the SQL <code class=\"command\">COPY</code> command 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.</p>\n</div>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-COPY", "comparison_data": {"modifiers": [], "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 [, ...] ) ]", "spellings": ["\\copy"], "definition": "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. When program is specified, command is executed by psql and the data passed from or to command is 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 the COPY count command 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 or \\o option, write from pstdin or to pstdout . The syntax of this command is similar to that of the SQL COPY command. All options other than the data source/destination are as specified for COPY . Because of this, special parsing rules apply to the \\copy meta-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 ... to is to use the SQL COPY ... TO STDOUT command and terminate it with \\g filename or \\g | program . Unlike \\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 COPY command 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."}, "comparison_hash": "e071767018f7d11f024bce4d06b14a4d3f8ba780a74d277363f0d263427ccc48"}, "20": {"facts": [{"label": "Client", "value": "psql 20devel"}, {"label": "Case-sensitive spelling", "value": "\\copy"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-6f-70-79/?v=20", "text": "\\copy"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\copy", "related": [{"url": "/wiki/tool/psql/?v=20", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "label": "20devel", "major": "20", "channel": "devel", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/20/postgresql-20-A4.pdf", "bytes": 16030631, "pages": 3052, "sha256": "bd5d82c0ce38fc18f92a0447818a91a193a261776bca1c37564bf9a683e177d0", "built_at": "2026-09-28"}, "US": {"url": "/files/documentation/pdf/20/postgresql-20-US.pdf", "bytes": 15936613, "pages": 3223, "sha256": "d97d9e0db479a02f4234b175f50fcad70c3661619afc8d6df9b9437882e3c299", "built_at": "2026-09-28"}}, "tree": "0", "index": "index.html", "major": "20", "pages": 1156, "release": "20devel", "source_url": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "svg_assets": 6, "source_mode": "en SGML built with pinned official archive", "source_sha256": "4d3346909b201ac1648232cf290462a7070c119326f56196f1f0253ed80fae41", "source_snapshot_utc": "26-Sep-2026 20:22"}, "revision": "2eba5e0fd4c3bffb2803247b6cd537878e9d6ee5a6dfbe3c50ece8b421b80918", "evidence_kind": "English manual and source declarations", "source_sha256": "4d3346909b201ac1648232cf290462a7070c119326f56196f1f0253ed80fae41"}, "sources": [{"url": "/docs/devel/app-psql.html#APP-PSQL-META-COMMANDS-COPY", "file": "app-psql.html", "label": "20devel English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-COPY", "sha256": "6df5f6fbaff7800ae0e4a08a3116090d890a0cdcc02fddc31c1f220725905f87"}], "sections": [], "modifiers": [], "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 [, ...] ) ]", "spellings": ["\\copy"], "description": ["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."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-COPY\"><span class=\"term\"><code class=\"literal\">\\copy { <em class=\"replaceable\"><code>table</code></em> [ ( <em class=\"replaceable\"><code>column_list</code></em> ) ] } <code class=\"literal\">from</code> { <em class=\"replaceable\"><code>'filename'</code></em> | program <em class=\"replaceable\"><code>'command'</code></em> | stdin | pstdin } [ [ with ] ( <em class=\"replaceable\"><code>option</code></em> [, ...] ) ] [ where <em class=\"replaceable\"><code>condition</code></em> ]</code><br></span><span class=\"term\"><code class=\"literal\">\\copy { <em class=\"replaceable\"><code>table</code></em> [ ( <em class=\"replaceable\"><code>column_list</code></em> ) ] | ( <em class=\"replaceable\"><code>query</code></em> ) } <code class=\"literal\">to</code> { <em class=\"replaceable\"><code>'filename'</code></em> | program <em class=\"replaceable\"><code>'command'</code></em> | stdout | pstdout } [ [ with ] ( <em class=\"replaceable\"><code>option</code></em> [, ...] ) ]</code></span> </dt><dd>\n<p>Performs a frontend (client) copy. This is an operation that runs an SQL <a class=\"link\" href=\"/docs/devel/sql-copy.html\" title=\"COPY\"><code class=\"command\">COPY</code></a> command, but instead of the server reading or writing the specified file, <span class=\"application\">psql</span> 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.</p>\n<p>When <code class=\"literal\">program</code> is specified, <em class=\"replaceable\"><code>command</code></em> is executed by <span class=\"application\">psql</span> and the data passed from or to <em class=\"replaceable\"><code>command</code></em> is 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.</p>\n<p>For <code class=\"literal\">\\copy ... from stdin</code>, data rows are read from the same source that issued the command, continuing until a line containing only <code class=\"literal\">\\.</code> is read or the stream reaches EOF. This option is useful for populating tables in-line within an SQL script file. For <code class=\"literal\">\\copy ... to stdout</code>, output is sent to the same place as <span class=\"application\">psql</span> command output, and the <code class=\"literal\">COPY <em class=\"replaceable\"><code>count</code></em></code> command status is not printed (since it might be confused with a data row). To read/write <span class=\"application\">psql</span>'s standard input or output regardless of the current command source or <code class=\"literal\">\\o</code> option, write <code class=\"literal\">from pstdin</code> or <code class=\"literal\">to pstdout</code>.</p>\n<p>The syntax of this command is similar to that of the SQL <a class=\"link\" href=\"/docs/devel/sql-copy.html\" title=\"COPY\"><code class=\"command\">COPY</code></a> command. All options other than the data source/destination are as specified for <code class=\"command\">COPY</code>. Because of this, special parsing rules apply to the <code class=\"command\">\\copy</code> meta-command. Unlike most other meta-commands, the entire remainder of the line is always taken to be the arguments of <code class=\"command\">\\copy</code>, and neither variable interpolation nor backquote expansion are performed in the arguments.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>Another way to obtain the same result as <code class=\"literal\">\\copy ... to</code> is to use the SQL <code class=\"literal\">COPY ... TO STDOUT</code> command and terminate it with <code class=\"literal\">\\g <em class=\"replaceable\"><code>filename</code></em></code> or <code class=\"literal\">\\g |<em class=\"replaceable\"><code>program</code></em></code>. Unlike <code class=\"literal\">\\copy</code>, this method allows the command to span multiple lines; also, variable interpolation and backquote expansion can be used.</p>\n</div>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>These operations are not as efficient as the SQL <code class=\"command\">COPY</code> command 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.</p>\n</div>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-COPY", "comparison_data": {"modifiers": [], "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 [, ...] ) ]", "spellings": ["\\copy"], "definition": "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. When program is specified, command is executed by psql and the data passed from or to command is 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 the COPY count command 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 or \\o option, write from pstdin or to pstdout . The syntax of this command is similar to that of the SQL COPY command. All options other than the data source/destination are as specified for COPY . Because of this, special parsing rules apply to the \\copy meta-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 ... to is to use the SQL COPY ... TO STDOUT command and terminate it with \\g filename or \\g | program . Unlike \\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 COPY command 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."}, "comparison_hash": "e071767018f7d11f024bce4d06b14a4d3f8ba780a74d277363f0d263427ccc48"}}}, "snapshot": {"facts": [{"label": "Client", "value": "psql 18.6"}, {"label": "Case-sensitive spelling", "value": "\\copy"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-6f-70-79/?v=18", "text": "\\copy"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\copy", "related": [{"url": "/wiki/tool/psql/?v=18", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/18/postgresql-18-A4.pdf", "bytes": 15865106, "pages": 3154, "sha256": "19512c405da53f9f7fcf0abba359223aa65f021be025bf3411381918f92e3190", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/18/postgresql-18-US.pdf", "bytes": 15748059, "pages": 3328, "sha256": "facbe6c229e598b872d3d98bef53308f46e06746006fa4590de9a7de9dd46319", "built_at": "2026-09-26"}}, "tree": "18", "index": "index.html", "major": "18", "pages": 1148, "release": "18.6", "source_url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "svg_assets": 3, "source_mode": "en SGML built with pinned official archive", "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "revision": "ee8d1a3612338fd9adf250730cb640fcc5233b5491337cc00a316a44e3a0b9f8", "evidence_kind": "English manual and source declarations", "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "sources": [{"url": "/docs/18/app-psql.html#APP-PSQL-META-COMMANDS-COPY", "file": "app-psql.html", "label": "18.6 English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-COPY", "sha256": "fa2a1d39294b8854318e82e93f71272c645ed88150ecc2786c28902c3f32782c"}], "sections": [], "modifiers": [], "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 [, ...] ) ]", "spellings": ["\\copy"], "description": ["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."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-COPY\"><span class=\"term\"><code class=\"literal\">\\copy { <em class=\"replaceable\"><code>table</code></em> [ ( <em class=\"replaceable\"><code>column_list</code></em> ) ] } <code class=\"literal\">from</code> { <em class=\"replaceable\"><code>'filename'</code></em> | program <em class=\"replaceable\"><code>'command'</code></em> | stdin | pstdin } [ [ with ] ( <em class=\"replaceable\"><code>option</code></em> [, ...] ) ] [ where <em class=\"replaceable\"><code>condition</code></em> ]</code><br></span><span class=\"term\"><code class=\"literal\">\\copy { <em class=\"replaceable\"><code>table</code></em> [ ( <em class=\"replaceable\"><code>column_list</code></em> ) ] | ( <em class=\"replaceable\"><code>query</code></em> ) } <code class=\"literal\">to</code> { <em class=\"replaceable\"><code>'filename'</code></em> | program <em class=\"replaceable\"><code>'command'</code></em> | stdout | pstdout } [ [ with ] ( <em class=\"replaceable\"><code>option</code></em> [, ...] ) ]</code></span> </dt><dd>\n<p>Performs a frontend (client) copy. This is an operation that runs an SQL <a class=\"link\" href=\"/docs/18/sql-copy.html\" title=\"COPY\"><code class=\"command\">COPY</code></a> command, but instead of the server reading or writing the specified file, <span class=\"application\">psql</span> 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.</p>\n<p>When <code class=\"literal\">program</code> is specified, <em class=\"replaceable\"><code>command</code></em> is executed by <span class=\"application\">psql</span> and the data passed from or to <em class=\"replaceable\"><code>command</code></em> is 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.</p>\n<p>For <code class=\"literal\">\\copy ... from stdin</code>, data rows are read from the same source that issued the command, continuing until a line containing only <code class=\"literal\">\\.</code> is read or the stream reaches EOF. This option is useful for populating tables in-line within an SQL script file. For <code class=\"literal\">\\copy ... to stdout</code>, output is sent to the same place as <span class=\"application\">psql</span> command output, and the <code class=\"literal\">COPY <em class=\"replaceable\"><code>count</code></em></code> command status is not printed (since it might be confused with a data row). To read/write <span class=\"application\">psql</span>'s standard input or output regardless of the current command source or <code class=\"literal\">\\o</code> option, write <code class=\"literal\">from pstdin</code> or <code class=\"literal\">to pstdout</code>.</p>\n<p>The syntax of this command is similar to that of the SQL <a class=\"link\" href=\"/docs/18/sql-copy.html\" title=\"COPY\"><code class=\"command\">COPY</code></a> command. All options other than the data source/destination are as specified for <code class=\"command\">COPY</code>. Because of this, special parsing rules apply to the <code class=\"command\">\\copy</code> meta-command. Unlike most other meta-commands, the entire remainder of the line is always taken to be the arguments of <code class=\"command\">\\copy</code>, and neither variable interpolation nor backquote expansion are performed in the arguments.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>Another way to obtain the same result as <code class=\"literal\">\\copy ... to</code> is to use the SQL <code class=\"literal\">COPY ... TO STDOUT</code> command and terminate it with <code class=\"literal\">\\g <em class=\"replaceable\"><code>filename</code></em></code> or <code class=\"literal\">\\g |<em class=\"replaceable\"><code>program</code></em></code>. Unlike <code class=\"literal\">\\copy</code>, this method allows the command to span multiple lines; also, variable interpolation and backquote expansion can be used.</p>\n</div>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>These operations are not as efficient as the SQL <code class=\"command\">COPY</code> command 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.</p>\n</div>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-COPY", "comparison_data": {"modifiers": [], "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 [, ...] ) ]", "spellings": ["\\copy"], "definition": "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. When program is specified, command is executed by psql and the data passed from or to command is 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 the COPY count command 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 or \\o option, write from pstdin or to pstdout . The syntax of this command is similar to that of the SQL COPY command. All options other than the data source/destination are as specified for COPY . Because of this, special parsing rules apply to the \\copy meta-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 ... to is to use the SQL COPY ... TO STDOUT command and terminate it with \\g filename or \\g | program . Unlike \\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 COPY command 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."}, "comparison_hash": "e071767018f7d11f024bce4d06b14a4d3f8ba780a74d277363f0d263427ccc48"}, "comparison": {"left": "13", "right": "14", "status": "changed", "diff": "--- PostgreSQL 13\n+++ PostgreSQL 14\n@@ -1,5 +1,5 @@\n {\n-  \"definition\": \"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. When program is specified, command is executed by psql and the data passed from or to command is 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 \\\\. is read or the stream reaches EOF . This option is useful for populating tables in-line within a SQL script file. For \\\\copy ... to stdout , output is sent to the same place as psql command output, and the COPY count command 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 or \\\\o option, write from pstdin or to pstdout . The syntax of this command is similar to that of the SQL COPY command. All options other than the data source/destination are as specified for COPY . Because of this, special parsing rules apply to the \\\\copy meta-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 ... to is to use the SQL COPY ... TO STDOUT command and terminate it with \\\\g filename or \\\\g | program . Unlike \\\\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 COPY command 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. Also, because of this pass-through method, \\\\copy ... from in CSV mode will erroneously treat a \\\\. data value alone on a line as an end-of-input marker.\",\n+  \"definition\": \"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. When program is specified, command is executed by psql and the data passed from or to command is 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 \\\\. 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 the COPY count command 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 or \\\\o option, write from pstdin or to pstdout . The syntax of this command is similar to that of the SQL COPY command. All options other than the data source/destination are as specified for COPY . Because of this, special parsing rules apply to the \\\\copy meta-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 ... to is to use the SQL COPY ... TO STDOUT command and terminate it with \\\\g filename or \\\\g | program . Unlike \\\\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 COPY command 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. Also, because of this pass-through method, \\\\copy ... from in CSV mode will erroneously treat a \\\\. data value alone on a line as an end-of-input marker.\",\n   \"modifiers\": [],\n   \"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 [, ...] ) ]\",\n   \"spellings\": ["}}