我想從sftp目錄中讀取文件,然後將它們插入到Oracle表中。 因爲我們無法訪問服務器,所以我們無法從Oracle那裏獲得。 所以我想關於Java: 我發現下面的類:從SFTP獲取文件到Oracle
https://atechblogagain.wordpress.com/2013/06/04/simple-sftp-example-in-java-with-jsch/ :
import java.util.Vector;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;
public class DemoSftp {
public static void main(String[] args) throws JSchException, SftpException {
String hostname = "hostname";
String login = "login";
String password = "password";
String directory = "the directory";
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
JSch ssh = new JSch();
Session session = ssh.getSession(login, hostname, 22);
session.setConfig(config);
session.setPassword(password);
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp sftp = (ChannelSftp) channel;
sftp.cd(directory);
Vector files = sftp.ls("*");
System.out.printf("Found %d files in dir %s%n", files.size(), directory);
for (ChannelSftp.LsEntry file : files) {
if (file.getAttrs().isDir()) {
continue;
}
System.out.printf("Reading file : %s%n", file.getFilename());
BufferedReader bis = new BufferedReader(new InputStreamReader(sftp.get(file.getFilename())));
String line = null;
while ((line = bis.readLine()) != null) {
System.out.println(line);
}
bis.close();
}
channel.disconnect();
session.disconnect();
}
}
這讓我的存取權限SFTP目錄,並將其打印System.out.printf(「找到%d文件在目錄dir%s%n「,files.size(),目錄中),但是它顯示了以下行的錯誤:for(ChannelSftp.LsEntry file:files):
」此行的多個標記 - 類型不匹配:無法從元素類型對象轉換爲 ChannelSftp.LsEntry - 行斷點:SFTPEX [行:45] - 主(字符串[])「
我必須改變以使其工作? 你能幫我一個關於如何將文件內容清理成Oracle數據庫中的列的例子嗎?每個文件都有自己的行,包含名稱,類型和內容。
你有對象類的矢量'矢量files' –
我看到了,我知道這是錯誤的,但我對於Java來說,這是一種新鮮的事情,我不知道如何處理你告訴我的事情。 – Iulian