在 postgres 中,我们可以通过 COPY 将数据导出到文件中。但是所有的数据都会被保存到一个文件中。但我想将该文件分块成小文件。我们可以在导出后执行此操作。
但是有没有办法在复制过程中导出它?
或者在 psycopg2 中我们可以这样做吗?
在 postgres 中,我们可以通过 COPY 将数据导出到文件中。但是所有的数据都会被保存到一个文件中。但我想将该文件分块成小文件。我们可以在导出后执行此操作。
但是有没有办法在复制过程中导出它?
或者在 psycopg2 中我们可以这样做吗?
您可以使用一个
WHERE
条件:这里
id
代表任何数字列。您还可以使用其他数据类型,并在适当的WHERE
条件下以其他方式拆分数据。PROGRAM
通过该子句支持将 COPY 数据流式传输到程序中。Unix 命令
split
可以进行实际的拆分。例如:这会将输出拆分为按顺序编号的文件,每个文件不超过 10000 行。
psql 的;
PROGRAM
也支持该子句。\copy
在这种情况下,程序在客户端执行。警告:如果导出格式为 CSV 并且存在多行文本字段,则存在将字段拆分为多个文件的风险。
如果您已经有一个大文件并且有足够的磁盘空间,您可以使用以下方法。
假设您使用复制命令创建了一个大文件;
将文件拆分成块(仅限 Linux);