В ударе, как я мог добавить, целые числа с продвижением обнуляют, и поддержите указанный буфер

Вам не нужно создавать промежуточный файл. Вы можете сделать

pg_dump -C -h localhost -U localuser dbname | psql -h remotehost -U remoteuser dbname

или

pg_dump -C -h remotehost -U remoteuser dbname | psql -h localhost -U localuser dbname

с помощью psql или pg_dump для подключения к удаленному хосту.

С большой базой данных или медленное соединение, сброс файла и передача сжатого файла могут быть более быстрыми.

Поскольку Корнель сказал, что нет необходимости выгружать промежуточный файл, если вы хотите работать сжатым, вы можете использовать сжатый туннель

pg_dump -C dbname | bzip2 | ssh  remoteuser@remotehost "bunzip2 | psql dbname"

или

pg_dump -C dbname | ssh -C remoteuser@remotehost "psql dbname"

, но это решение также требует, чтобы сеанс был в обоих концах.

29
задан mtk 26 May 2012 в 16:12
поделиться

5 ответов

Если под статическим и динамическим вы имеете в виду, что вы хотели бы иметь возможность использовать переменную для ширины, вы можете сделать это:

$ padtowidth=3
$ for i in 0 {8..11} {98..101}; do printf "%0*d\n" $padtowidth $i; done
000
008
009
010
011
098
099
100
101

Звездочка заменяется значением переменная, которой она соответствует в списке аргументов (в данном случае $ padtowidth ).

В противном случае единственная причина, по которой ваш пример не работает, заключается в том, что вы используете «2» (возможно, как если бы это был максимальный применяемый отступ), когда он должен быть «3» (как в моем примере), поскольку это значение итоговая общая ширина (а не ширина только площадки).

33
ответ дан 28 November 2019 в 00:49
поделиться
# jot is available on FreeBSD, Mac OS X, ...    
jot -s " " -w '%03d' 5   
jot -s " " -w '%03d' 10  
jot -s " " -w '%03d' 50  
jot -s " " -w '%03d' 100   
4
ответ дан 28 November 2019 в 00:49
поделиться
#!/bin/bash

max=100; 

for ((i=1;i<=$max;i++)); do 
    printf "%0*d\n" ${#max} $i
done

Приведенный выше код автоматически дополнит ваши числа правильным числом 0 в зависимости от того, сколько цифр содержит максимальное / конечное значение. Все, что вам нужно сделать, это изменить переменную max , и она сделает все остальное.

Примеры:

max = 10

01
02
03
04
05
06
07
08
09
10

max = 100

001
002
003
004
005
006
...
097
098
099
100

max = 1000

0001
0002
0003
0004
0005
0006
...
0997
0998
0999
1000
5
ответ дан 28 November 2019 в 00:49
поделиться

Если ваша система поддерживает его, попробуйте seq с опцией -w (--equal-width):

$ seq -s, -w 1 10
01,02,03,04,05,06,07,08,09,10

$ for i in `seq -w 95 105` ; do echo -n " $i" ; done
095 096 097 098 099 100 101 102 103 104 105
33
ответ дан 28 November 2019 в 00:49
поделиться

В Bash версии 4 (используйте bash -version) вы можете использовать расширение фигурных скобок . Если поставить 0 перед любым пределом, числа будут дополнены нулями

echo {01..100} # 001 002 003 ...
echo {03..100..3} # 003 006 009 ...
12
ответ дан 28 November 2019 в 00:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: