因为有个导入数据的需求,要求是从ftp服务器找到文件,并将文件读到数据库的临时表中。
所以写了一个工具类。(注:字段间是用’,‘隔开的)
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import com.eos.system.annotation.Bizlet;
import sun.net.TelnetInputStream;
import sun.net.ftp.FtpClient;
/**
* 从ftp找到文件并将文件里的数据插入到数据库
*
* @author yourname (mailto:yourname@primeton.com)
*/
public class FTPdownload {
/**
* @param fileUrl 文件的路径
* @param tableName 对应的表的名字
* @throws Exception
*/
public void fileDownload(String fileUrl,String tableName) throws Exception {
TelnetInputStream fget = null;
RandomAccessFile getFile = null;
FtpClient fc = null;
PreparedStatement ps = null;
String ftpIP = "192.168.0.55";
String ftpUserName = "ryan";
String passWord = "ryan";
String fileUrls = fileUrl;//"测试/contacts20100520.txt";
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; // 加载JDBC驱动
String dbURL = "jdbc:sqlserver://192.168.0.55:3689; DatabaseName=ermis"; // 连接服务器和数据库test
String userName = "sa"; // 默认用户名
String userPwd = "123456"; // 密码
Connection dbConn = null;
try {
Class.forName(driverName);
dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
System.out.println("Connection Successful!"); // 如果连接成功控制台输出Connection Successful!
} catch (Exception e) {
e.printStackTrace();
}
try {
fc = new FtpClient();// ftp客户端对象
fc.openServer(ftpIP);// 连接ftp服务器
fc.login(ftpUserName, passWord);// 登录ftp服务器
fc.binary();// 使用二进制的方式下载
fget = fc.get(fileUrls);// 读取ftp远程文件
InputStreamReader read = new InputStreamReader(fget, "UTF-8");
BufferedReader br = new BufferedReader(read);
String deleteSql = "delete from "+tableName+";";
ps = dbConn.prepareStatement(deleteSql);
ps.executeUpdate();
ps.close();
try {
String line;
int index=0;
while ((line = br.readLine()) != null) {
if(index>0){
StringBuffer sql = new StringBuffer();
sql.append("insert into "+tableName+" values(");
String[] row = line.split(",");
for (int i = 0; i < row.length; i++) {
if (i < row.length - 1)
sql.append("'" + row[i] + "',");
if (i == row.length - 1)
sql.append("'" + row[i] + "'");
}
sql.append(");");
//System.out.println(sql);
ps = dbConn.prepareStatement(sql.toString());
ps.executeUpdate();
ps.close();
}
index++;
}
} catch (FileNotFoundException e) {
e.printStackTrace(System.out);
throw new Exception(e.getMessage());
} catch (IOException e) {
}
} catch (Exception e) {
e.printStackTrace(System.out);
throw new Exception(e.getMessage());
} finally {
try {
if(dbConn!=null)
dbConn.close();
System.out.println("Connection Close!");
fget.close();
} catch (Exception e) {
}
try {
fget.close();
} catch (Exception e) {
}
try {
getFile.close();
} catch (Exception e) {
}
try {
fc.closeServer();
} catch (Exception e) {
}
}
}
public static void main(String[] args) throws Exception {
FTPdownload f = new FTPdownload();
f.fileDownload("测试/contacts20100520.txt", "tmp_employee");
}
}
分享到:
相关推荐
标题 "java 读取Ftp指定位置的文件解析并入库" 涉及到的是使用Java编程语言通过FTP(File Transfer Protocol)协议从远程服务器上下载文件,然后对下载的文件进行解析,并将解析得到的数据存储到数据库中。...
例如,你可以使用开源的命令行工具`ftp`,或者编程语言如Java中的`java.net.URL`和`java.net.URLConnection`类来实现文件的自动化下载。 下载的文件内容通常需要被解析和处理。在这个案例中,可能是一个包含数据的...
在这个例子中,`PdfUtilsPic.java`可能实现了从模板中读取元素,并将动态数据插入到相应位置的方法。 在`M8.pdf`模板文件中,我们可以看到预设的布局和设计,这些元素在生成PDF时会被填充上动态数据。例如,文本...
标题 "FtpIndexer" 提供的信息表明,这是一个用于处理 FTP 服务器的工具,它的主要功能是抓取 FTP 服务器上的目录结构,并将这些信息存储到数据库中。这个工具是用 Java 编写的,因此具备跨平台性,可以在 Windows ...
1. **DataCollector.java**:这是主要的数据采集类,可能包含读取、解析wtmpx文件并提取所需信息的代码。Java的FileInputStream和DataInputStream类可以用来读取二进制文件,而BufferedReader配合FileReader则适用于...
介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作典型应用和数据库应用。全书分5篇24章,共计603个实例和603个经验技巧。每个实例都...
以上只是Java API的一部分关键知识点,实际上Java API包含的内容远不止这些,还有诸如NIO(New IO)、并发工具类、XML处理、国际化、安全管理等多个领域。这个官方文档中文版.CHM文件是学习和查阅Java API的宝贵资源...
4. 发布到服务器:生成WAR文件后,可以通过FTP、SCP等方式上传至服务器的Tomcat或其他应用服务器的webapps目录下,然后启动或重启服务器完成部署。 三、Ant操作数据库 1. 数据库连接:Ant可以使用JDBC任务来连接...
在Java项目中,这些jar包通常会被添加到项目的类路径(classpath)中,以便编译和运行时能够找到并使用其中的类和方法。在使用Maven或Gradle这样的构建工具时,可以直接在依赖管理中声明对这些库的依赖,避免手动...
Java的输入输出(I/O)流提供了一种机制,用于读取和写入数据到磁盘文件、网络连接或其他数据源。流分为字节流和字符流,分别处理二进制数据和文本数据。常见的流类有FileInputStream、FileOutputStream、...
这是Java应用程序与MySQL通信的标准驱动程序,允许开发人员执行SQL查询、插入、更新和删除数据库中的数据。 3. **邮件服务**: - `mail` 标签可能对应的是 `javax.mail.jar`,这是一个用于发送和接收电子邮件的...
- **FTP**(File Transfer Protocol):用于在网络上进行文件传输的协议,支持上传和下载功能。 - **SMTP**(Simple Mail Transfer Protocol):用于电子邮件发送的基本协议。 - **Telnet**:提供远程登录服务,允许...
Java的设计目标是具有高度的可移植性、安全性、健壮性和性能,使其能够在各种平台和设备上运行,包括个人电脑、服务器、移动设备以及嵌入式系统。 1. **Java基础** - **语法结构**:Java语法与C++类似,但更简洁,...
`java.util`包含各种通用工具类和集合框架,如`ArrayList`、`HashMap`。 2. **集合框架**:在Java 6中,集合框架是一个重要的部分,它提供了多种数据结构,如列表(List)、队列(Queue)、集(Set)和映射(Map)...
在Java开发过程中,使用各种库和框架是常态,这些库和框架往往被打包成JAR(Java Archive)文件,方便开发者引入项目中使用。这里提到的"java开发中常用的包"压缩文件,包含了大约40个Java开发中非常重要的JAR包。...
本压缩包"10套完整java系统案例,各个课题都有.zip"包含了一系列完整的Java项目实例,这些实例覆盖了多种Java开发的课题,对于学习和提升Java编程技能非常有帮助。 1. **基础语法与面向对象编程** - Java的基础...
《Java语言程序设计(进阶篇)原书第10版答案》涵盖了广泛的Java编程高级主题,旨在帮助读者深入理解并熟练掌握Java编程技术。在这个资料包中,我们可以看到一系列与JavaFX、泛型、线性数据结构、集合框架、网络编程...