Мы пытаемся импортировать дамп базы данных в нашу локальную базу данных, выполнив вывод pg_dump в psql. Он отлично работает, когда мы выполняем команду в командной строке, но она не внутри ProcessBuilder
Яваpg_dump слишком много аргументов внутри ProcessBuilder
Вот как это выглядит:
ProcessBuilder processBuilder = new ProcessBuilder("pg_dump", "-h" + hostRemote,
"-p" + portRemote, "-U" + usernameRemote, "-a", dbNameRemote, "|",
"psql", "-h" + hostLocal, "-p" + portLocal, "-U" + usernameLocal, dbNameLocal);
И это ошибка, мы получаем: pg_dump : слишком много аргументов командной строки (первый - это |).
Есть ли какой-то особый улов, который мы не видим? Любая помощь будет оценена по достоинству.
EDIT: Вымытый отдельные лексемы:
ProcessBuilder processBuilder = new ProcessBuilder("pg_dump", "-h", hostRemote,
"-p", Integer.toString(portRemote), "-U", usernameRemote, "-a", dbNameRemote, "|",
"psql", "-h", hostLocal, "-p", Integer.toString(portLocal),
"-U", usernameLocal, dbNameLocal);
Вам нужно создать свой массив или List и каждый маркер будет его собственным элементом в списке или массиве. –
, например, вы объединяете строки с пробелами и подаете их в качестве токена - не делайте этого - вместо этого разделите их как отдельные токены без пробелов в ваших токенах String. Поэтому не '' -h "+ hostRemote, а скорее:' "-h", hostRemote, ' –
Кроме того, вы захватываете потоки соответствующим образом? –