zmb*_*mbq 12 memory powershell pipe windows-10
我最近开始使用 PowerShell,希望再也不会错过Bash。
我想恢复一个PostgreSQL数据库的实例。在 Bash 或旧的命令提示符中,我会输入:
psql --username=... db_name < 备份.sql
在 PowerShell 中,我发现我需要这样做:
获取内容备份.sql | & psql --username=... db_name
问题是 backup.sql 很大 - 大于我机器上的 RAM 量。Get-Content首先将文件读取到内存中,然后才将其发送到psql.
这是个问题。
如何模拟<PowerShell 中的行为?
Vom*_*yle 12
PowerShellGet-Content在处理大文件时似乎效率不高,因此您可以使用-ReadCount开关来告诉它一次从文件中传输多少行。我把 500 放在下面,所以它一次可以管道 500 行。
也请阅读下面的 Microsoft PowerShell 文章。
PowerShell v 5.0 示例
Get-Content -ReadCount 500 backup.sql | & psql --username=... db_namePowerShell 旧版本示例
Get-Content -Read 500 backup.sql | & psql --username=... db_name由于 PowerShellGet-Content对大文件无效,请查看Start-Process
也请阅读下面的 Microsoft PowerShell 文章。
PowerShell v 5.0 示例(使用-RedirectStandardInput开关)
Start-Process "C:\Program Files\PostgreSQL\<version>\bin\psql.exe" '--username=... db_name' -RedirectStandardInput backup.sql -NoNewWindow -Wait
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14371 次 |
| 最近记录: |