Estimate/Print csv COPY 状态到 postgresql table
Estimate/Print csv COPY status to postgresql table
我想知道将 csv 复制到 postgresql 需要多长时间 table。有没有办法以合理的方式打印复制的行,或者有其他方法以某种方式显示复制的进度?
也许有一个冗长的设置,或者我应该使用 --echo 或 -qecho
我正在使用:
psql -U postgres -d nyc_data -h localhost -c "\COPY rides FROM nyc_data_rides.csv CSV"
不幸的是没有这样的东西。
一个想法是将输入分成 1000 或 10000 行的块,然后逐行导入。这不会显着减慢处理速度,您可以快速估计整个导入需要多长时间。
正如 Laurenz Albe 所说,无法衡量完成整个过程还剩多少时间。但我今天做的一件事是:
- 在我的 Linux
中启动 "Monitor System"
- 在这个应用程序中有一个计数器,显示自从我启动这个应用程序以来上传了多少数据
- 根据我正在上传的文件的大小,我很好地预测了还有多少数据要发送到服务器。
使用 pv 工具
pv /tmp/some_table.csv | sudo -u postgres psql -d some_db -c "copy some_table from stdin delimiter ',' null '';"
因此,它将显示
1.42GiB 0:11:42 [2.06MiB/s] [===================================================================================================================================================================>] 100%
在 Postgres 14 中,现在可以通过内部 pg_stat_progress_copy
视图查询活动 COPY
的状态。
例如观察处理的字节数和行数方面的进展:
select * from pg_stat_progress_copy \watch 1
参考文献:
我想知道将 csv 复制到 postgresql 需要多长时间 table。有没有办法以合理的方式打印复制的行,或者有其他方法以某种方式显示复制的进度?
也许有一个冗长的设置,或者我应该使用 --echo 或 -qecho
我正在使用:
psql -U postgres -d nyc_data -h localhost -c "\COPY rides FROM nyc_data_rides.csv CSV"
不幸的是没有这样的东西。
一个想法是将输入分成 1000 或 10000 行的块,然后逐行导入。这不会显着减慢处理速度,您可以快速估计整个导入需要多长时间。
正如 Laurenz Albe 所说,无法衡量完成整个过程还剩多少时间。但我今天做的一件事是:
- 在我的 Linux 中启动 "Monitor System"
- 在这个应用程序中有一个计数器,显示自从我启动这个应用程序以来上传了多少数据
- 根据我正在上传的文件的大小,我很好地预测了还有多少数据要发送到服务器。
使用 pv 工具
pv /tmp/some_table.csv | sudo -u postgres psql -d some_db -c "copy some_table from stdin delimiter ',' null '';"
因此,它将显示
1.42GiB 0:11:42 [2.06MiB/s] [===================================================================================================================================================================>] 100%
在 Postgres 14 中,现在可以通过内部 pg_stat_progress_copy
视图查询活动 COPY
的状态。
例如观察处理的字节数和行数方面的进展:
select * from pg_stat_progress_copy \watch 1
参考文献: