`
zl-2577
  • 浏览: 80287 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java写的从ftp上找到文件并把文件里的数据插入到数据库的工具类

阅读更多
因为有个导入数据的需求,要求是从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指定位置的文件解析并入库" 涉及到的是使用Java编程语言通过FTP(File Transfer Protocol)协议从远程服务器上下载文件,然后对下载的文件进行解析,并将解析得到的数据存储到数据库中。...

    下载ftp文件,读取内容通过Phoenix JDBC连接往Hbase数据库中建表插入数据。

    例如,你可以使用开源的命令行工具`ftp`,或者编程语言如Java中的`java.net.URL`和`java.net.URLConnection`类来实现文件的自动化下载。 下载的文件内容通常需要被解析和处理。在这个案例中,可能是一个包含数据的...

    JAVA根据PDF模板生成PDF文件.rar

    在这个例子中,`PdfUtilsPic.java`可能实现了从模板中读取元素,并将动态数据插入到相应位置的方法。 在`M8.pdf`模板文件中,我们可以看到预设的布局和设计,这些元素在生成PDF时会被填充上动态数据。例如,文本...

    FtpIndexer:从 FTP 服务器获取目录列表并将其插入数据库。-开源

    标题 "FtpIndexer" 提供的信息表明,这是一个用于处理 FTP 服务器的工具,它的主要功能是抓取 FTP 服务器上的目录结构,并将这些信息存储到数据库中。这个工具是用 Java 编写的,因此具备跨平台性,可以在 Windows ...

    DMS.rar_datacollector.java_dms_dms ja_java d_wtmpx文件下载

    1. **DataCollector.java**:这是主要的数据采集类,可能包含读取、解析wtmpx文件并提取所需信息的代码。Java的FileInputStream和DataInputStream类可以用来读取二进制文件,而BufferedReader配合FileReader则适用于...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作典型应用和数据库应用。全书分5篇24章,共计603个实例和603个经验技巧。每个实例都...

    java api官方帮助文档

    以上只是Java API的一部分关键知识点,实际上Java API包含的内容远不止这些,还有诸如NIO(New IO)、并发工具类、XML处理、国际化、安全管理等多个领域。这个官方文档中文版.CHM文件是学习和查阅Java API的宝贵资源...

    13_ant_发布web项目和操作数据库

    4. 发布到服务器:生成WAR文件后,可以通过FTP、SCP等方式上传至服务器的Tomcat或其他应用服务器的webapps目录下,然后启动或重启服务器完成部署。 三、Ant操作数据库 1. 数据库连接:Ant可以使用JDBC任务来连接...

    commons-net-3.0.1.jar,mysql-connector-java-5.1.22-bin.jar

    在Java项目中,这些jar包通常会被添加到项目的类路径(classpath)中,以便编译和运行时能够找到并使用其中的类和方法。在使用Maven或Gradle这样的构建工具时,可以直接在依赖管理中声明对这些库的依赖,避免手动...

    SUN - SL-275 Java Programming Language.pdf

    Java的输入输出(I/O)流提供了一种机制,用于读取和写入数据到磁盘文件、网络连接或其他数据源。流分为字节流和字符流,分别处理二进制数据和文本数据。常见的流类有FileInputStream、FileOutputStream、...

    java常用各种jar包(持续更新)

    这是Java应用程序与MySQL通信的标准驱动程序,允许开发人员执行SQL查询、插入、更新和删除数据库中的数据。 3. **邮件服务**: - `mail` 标签可能对应的是 `javax.mail.jar`,这是一个用于发送和接收电子邮件的...

    java考试复习资料

    - **FTP**(File Transfer Protocol):用于在网络上进行文件传输的协议,支持上传和下载功能。 - **SMTP**(Simple Mail Transfer Protocol):用于电子邮件发送的基本协议。 - **Telnet**:提供远程登录服务,允许...

    Java的详细介绍

    Java的设计目标是具有高度的可移植性、安全性、健壮性和性能,使其能够在各种平台和设备上运行,包括个人电脑、服务器、移动设备以及嵌入式系统。 1. **Java基础** - **语法结构**:Java语法与C++类似,但更简洁,...

    Java6 API 中文

    `java.util`包含各种通用工具类和集合框架,如`ArrayList`、`HashMap`。 2. **集合框架**:在Java 6中,集合框架是一个重要的部分,它提供了多种数据结构,如列表(List)、队列(Queue)、集(Set)和映射(Map)...

    java开发中常用的包

    在Java开发过程中,使用各种库和框架是常态,这些库和框架往往被打包成JAR(Java Archive)文件,方便开发者引入项目中使用。这里提到的"java开发中常用的包"压缩文件,包含了大约40个Java开发中非常重要的JAR包。...

    10套完整java系统案例,各个课题都有.zip

    本压缩包"10套完整java系统案例,各个课题都有.zip"包含了一系列完整的Java项目实例,这些实例覆盖了多种Java开发的课题,对于学习和提升Java编程技能非常有帮助。 1. **基础语法与面向对象编程** - Java的基础...

    Java语言程序设计(进阶篇)原书第10版答案

    《Java语言程序设计(进阶篇)原书第10版答案》涵盖了广泛的Java编程高级主题,旨在帮助读者深入理解并熟练掌握Java编程技术。在这个资料包中,我们可以看到一系列与JavaFX、泛型、线性数据结构、集合框架、网络编程...

Global site tag (gtag.js) - Google Analytics