在 exec() 中处理 \n 和 \t - Java
Handling \n and \t in exec() - Java
我正在尝试使用 java:
在 linux 中执行如下所示的 bcp 命令
bcp dbname..mytable in /home/guest/test -U guest -P guest -S LXXDB1D06 -I /opt/sybase/08/interfaces -c -Y -t \| -r \n
在JavaClass中,我这样做:
Runtime rt = Runtime.getRuntime();
Process p;
try {
p = rt.exec("bcp dbname..mytable in /home/guest/test -U guest -P guest -S LXXDB1D06 -I /opt/sybase/08/interfaces -c -Y -t \| -r \n");
p.waitFor();
} catch(..){
..}
我尝试了 \|、"\"+"\n" 和其他几个。
但是没有用。
正确的格式应该是什么?
编辑:使用 ProcessBuilder,它看起来像:
[bcp, pfactdbcpusdev01..gb_inactive_upc, in, C:\hs_data_dev_00\itm_mstr\tmp\usaupcinact_tmp_rollup, -U, inactupcUSD1, -P, inac01, -S, ACNLNXQ002D01, -I, C:\Program Files\Nielsen\Sybase.5.1/interfaces, -c, -t, |, -r, \n, -Y]
这是一个超级经典的问题,坦率地说,我很惊讶你没有通过谷歌搜索找到解决方案...
解决方案是使用 ProcessBuilder
:
final ProcessBuilder pb = new ProcessBuilder("bcp", "dbname..mytable",
"in", "/home/guest/test",
"-U", "guest",
"-P", "guest",
"-S", "LXXDB1DO6",
"-I", "/opt/sybase/08/interfaces",
"-c",
"-Y",
"-t", "|",
"-r", "\n"
);
final Process p = pb.start();
此外,您应该检查 .waitFor() 的结果。
同时查看 execve(2)
、execl(2)
和朋友的联机帮助页。
我正在尝试使用 java:
在 linux 中执行如下所示的 bcp 命令bcp dbname..mytable in /home/guest/test -U guest -P guest -S LXXDB1D06 -I /opt/sybase/08/interfaces -c -Y -t \| -r \n
在JavaClass中,我这样做:
Runtime rt = Runtime.getRuntime();
Process p;
try {
p = rt.exec("bcp dbname..mytable in /home/guest/test -U guest -P guest -S LXXDB1D06 -I /opt/sybase/08/interfaces -c -Y -t \| -r \n");
p.waitFor();
} catch(..){
..}
我尝试了 \|、"\"+"\n" 和其他几个。 但是没有用。 正确的格式应该是什么?
编辑:使用 ProcessBuilder,它看起来像:
[bcp, pfactdbcpusdev01..gb_inactive_upc, in, C:\hs_data_dev_00\itm_mstr\tmp\usaupcinact_tmp_rollup, -U, inactupcUSD1, -P, inac01, -S, ACNLNXQ002D01, -I, C:\Program Files\Nielsen\Sybase.5.1/interfaces, -c, -t, |, -r, \n, -Y]
这是一个超级经典的问题,坦率地说,我很惊讶你没有通过谷歌搜索找到解决方案...
解决方案是使用 ProcessBuilder
:
final ProcessBuilder pb = new ProcessBuilder("bcp", "dbname..mytable",
"in", "/home/guest/test",
"-U", "guest",
"-P", "guest",
"-S", "LXXDB1DO6",
"-I", "/opt/sybase/08/interfaces",
"-c",
"-Y",
"-t", "|",
"-r", "\n"
);
final Process p = pb.start();
此外,您应该检查 .waitFor() 的结果。
同时查看 execve(2)
、execl(2)
和朋友的联机帮助页。