亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ProcessBuilder 不在服務器上創建文件

ProcessBuilder 不在服務器上創建文件

萬千封印 2023-07-28 10:21:22
我正在使用進程生成器從 postgres 運行psql命令來調用copy命令來導出一些表。我的工作流程如下:String sql = "\"\\copy ( SELECT * from table ) TO '/folder' DELIMITER '|' NULL '\\N'\";List<String> commands = new ArrayList<>();commands.add("sudo");commands.add("-u");commands.add("root");commands.add("psql");commands.add("-h");commands.add("host");commands.add("-U");commands.add("postgres");commands.add("-d");commands.add("database");commands.add("-c");commands.add(sql);ProcessBuilder process = new ProcessBuilder(commands);Process execution = process.start();execution.waitFor(); // each calling to export data wait a little to generate next;以下命令將在該命令中打開 Final:sudo -u root psql -h host -U postgres -d database_user -c \copy ( select * from table TO "/folder/file.txt/" DELIMITER '|' NULL '\\N'" )但它file.txt不是在服務器中創建的,即使作為root.本地工作正常。但是當在服務器內運行時,命令不會運行。問題出在哪里?
查看完整描述

1 回答

?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

我已經解決了這個問題。

只需刪除“-c”參數的引號,即不轉義最終字符串。

反而:

sudo -u root psql -h host -U postgres -d database_user -c \copy "( select * from table TO '/folder/file.txt/') DELIMITER '|' NULL '\\N'

我用了:

sudo -u root psql -h host -U postgres -d database_user -c \copy ( select * from table TO '/folder/file.txt/') DELIMITER '|' NULL '\\N'



查看完整回答
反對 回復 2023-07-28
  • 1 回答
  • 0 關注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號