package com.vefan.csv;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
/**
* 本文讲的是在java环境下对CSV文件进行读取操作,前几天在网上找到一个驱动可以把这种格式的文件当作数据库一样读取。操作步骤如下:
* 第一、下载驱动程序http://sourceforge.net/projects/csvjdbc
* 第二、把csvjdbc.jar文件放到classpath路径中去
* */
public class JdbcCsv
{
public static void main(String args[]){
JdbcCsv jdbcCsv = new JdbcCsv();
jdbcCsv.queryCsv();
}
public void queryCsv(){
Connection conn = null;
Statement stmt = null;
ResultSet results = null;
try
{
//load the driver into memory
Class.forName("org.relique.jdbc.csv.CsvDriver");
// create a connection. The first command line parameter is assumed
// to be the directory in which the .csv files are held
conn = DriverManager.getConnection("jdbc:relique:csv:E:\\workspace\\JavaApp\\csv");
// create a Statement object to execute the query
stmt = conn.createStatement();
String sql = "select * from user";
// String sql = "select * from user where rownum<3"; //不支持此种查询
// String sql = "select top 10 * from user"; //不支持此种查询
results = stmt.executeQuery(sql);
// results.setFetchSize(3); //不支持
ResultSetMetaData metaData = results.getMetaData();
int columnCount = metaData.getColumnCount(); //一共有多少列
for(int i=1; i<=columnCount; i++){
String name = metaData.getColumnName(i);
if(i!=columnCount)
System.out.print(name+"\t\t");
else
System.out.println(name+"\t\t");
}
while(results.next()){
// int rowNo = results.getRow(); 不支持获取当前行号
// System.out.println("第"+rowNo+"行");
for(int i=1; i<=columnCount; i++){
String value = results.getString(i);
if(i!=columnCount)
System.out.print(value+"\t\t");
else
System.out.println(value+"\t\t");
}
}
} catch (Exception e)
{
e.printStackTrace();
}
finally{
try
{
if(null != results) results.close();
if(null != stmt) stmt.close();
if(null != conn) conn.close();
} catch (SQLException e)
{
e.printStackTrace();
}
} //end of finally
}
}
/*
A read-only JDBC driver for Java that uses Comma Separated Value (CSV) files as database tables.
Ideal for writing data import programs and conversion programs.
The latest file releases:
Package Release Date
CsvJdbc 0.10 August 9, 2004
当时下载的csvjdbc.jar文件版本是0.10, 有很多JDBC的功能都不支持,
它只能把csv文件的第一行作为字段名,从第二行作为数据行,不能指定其它行作为字段名;
在创建链接时,csvjdbc是把存放csv文件的文件夹作为数据库,文件夹中的每一个csv文件作为数据库中的表;
*/
/*
* Advanced Options
--------------------------------------------------------------------------------
The driver also supports a number of parameters that change the default behaviour of the driver.
These properties are:
separator
Used to specify a different column separator (Default is ',').
suppressHeaders
Used to specify if the first line contains column header information (Default is false; column headers are on first line).
fileExtension
Used to specify a different file extension (Default is ".csv")
charset
Used to specify a different than default charset encoding of input file (default is same VM default charset)
This following example code shows how these properties are used.
...
Properties props = new java.util.Properties();
props.put("separator","|"); // separator is a bar
props.put("suppressHeaders","true"); // first line contains data
props.put("fileExtension",".txt"); // file extension is .txt
props.put("charset","ISO-8859-2"); // file encoding is "ISO-8859-2"
Connection conn = Drivermanager.getConnection("jdbc:relique:csv:" + args[0],props)
Scrollable ResultSets
--------------------------------------------------------------------------------
The driver also now supports scrollable result sets.
This following example code shows how these are used.
...
Connection conn = Drivermanager.getConnection("jdbc:relique:csv:" + args[0],props)
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, 0);
ResultSet results = stmt.executeQuery("SELECT ID,NAME FROM sample");
resulst.next();
...
results.first();
...
results.previous();
...
results.relative(2);
...
results.absolute(2);
...
*/
下面是user.csv文件内容:
ID CODE NAME MOBILE EMAIL VALID ORGANID LOGO |
33157 jia 用户甲 13625845145 0 24072 <BLOB> |
20600 1 高利强 13064878451 0 41 <BLOB> |
33163 yi 用户乙 13436963236 0 24072 <BLOB> |
33691 312 用户甲 13636363626 0 24072 <BLOB> |
78874 fsdf_gg 大幅度 15865895236 0 999 <BLOB> |
81322 1 中心 13533333333 1 45702 <BLOB> |
33879 YI 用户乙 13526262512 0 24072 <BLOB> |
33966 6 小李 13523075568 0 24072 <BLOB> |
81330 12234 中心 13533333333 1 45702 <BLOB> |
41637 12 12 15648551210 0 20583 <BLOB> |
41665 12 12 15648551210 0 20583 <BLOB> |
45829 hi hello 13589898545 0 24082 <BLOB> |
|
分享到:
相关推荐
下面我们将详细探讨如何使用Java和`javacsv`库对CSV文件进行读写操作。 **1. 添加javacsv依赖** 在进行读写操作前,你需要将`javacsv.jar`添加到项目类路径中。如果是Maven项目,可以将依赖项添加到pom.xml文件中...
为了高效地读取CSV文件,本文提供了一个名为`ReadCSV`的类,该类封装了读取功能,并提供了对文件的操作接口。 ```java import java.io.FileReader; import java.io.IOException; import java.util.Arrays; import ...
本文将深入探讨如何使用Java进行CSV文件的操作,基于提供的代码片段,我们将详细解析其工作原理,并扩展相关的知识点。 #### 一、Java读取CSV文件 Java读取CSV文件主要依赖于第三方库,如Apache Commons CSV或...
在本Java CSV操作实例中,我们将探讨如何使用Java读取、写入和处理CSV文件。 首先,Java标准库并未提供内置的CSV处理功能,但有第三方库如Apache Commons CSV、OpenCSV和Super CSV等可以帮助我们轻松地进行CSV操作...
在Java编程环境中,CSV(Comma Separated Values)文件是一种常见的数据存储格式,用于存储表格数据,如电子表格或数据库。...在处理大量数据时,正确使用CSV读取库可以极大地提高代码的可读性和效率。
或者,如果你的项目不使用Maven,你需要将`javacsv-2.0.jar`文件放到项目的类路径下。 2. 创建CSVReader对象:使用`CSVReader`类实例化一个对象,通常需要传入文件的输入流或文件路径。 ```java import ...
2. **流式处理**:使用Java的BufferedWriter类进行流式写入,每批数据读取后立即写入文件,减少内存占用。 3. **线程安全**:如果需要并发处理,可能需要使用多线程,并确保对文件的访问是线程安全的,比如使用...
通过以上示例代码可以看出,在Java中读取和处理CSV文件有多种方式,可以根据实际需求选择合适的方法。同时需要注意处理文件编码问题,确保数据正确解析。此外,对于大型CSV文件,应考虑内存占用和性能优化问题。
本篇文章将深入探讨如何使用Java来读取和写入CSV文件,并介绍一些通用的接口和方法。 首先,Java标准库并未提供专门处理CSV的类,但我们可以借助第三方库如Apache Commons CSV、OpenCSV或Java 8及以上版本的内置`...
`javacsv`库由David Beites创建,提供了读取和写入CSV文件的简单API。在项目中,你需要将`javacsv-2.0.jar`添加到类路径中,以便能够使用其提供的功能。 接下来,我们将讨论如何使用`javacsv`库来实现CSV文件的导出...
解析过程通常包括打开文件、创建解析器、迭代读取每一行,然后将每一行的数据转换为所需的数据结构,如列表或对象实例。 3. 多文件下载与并发处理: 实现多文件同时下载,可以使用Java的并发机制,如`...
Java标准库并没有提供直接处理CSV的API,但我们可以借助第三方库,如Apache Commons CSV、OpenCSV或者使用Java 8中的Stream API配合BufferedReader来逐行读取和写入文件。这些方法允许我们避免一次性加载所有数据,...
7. **性能优化**:虽然javacsv是一个轻量级库,但为了提高性能,可以考虑缓存读取的行,避免频繁的文件I/O操作。另外,对于大量数据,可以考虑使用缓冲流来提升读写速度。 8. **与其他库的比较**:javacsv相对简单...
- `javacsv`库体积小,且对JDK版本要求较低,适合各种环境下的Java应用。 在实际使用中,开发者首先需要将`javacsv.jar`添加到项目的类路径中,然后就可以直接引入库内的类和方法,进行CSV文件的读写操作。例如,...
这些类提供了读取和写入文件的基本操作,对于CSV文件,只需配合`split()`和`write()`方法,就可以轻松地处理数据。在实际应用中,你可能还需要考虑错误处理、数据验证和格式化等更复杂的需求。例如,使用Apache ...
CSV(Comma Separated Values)文件是一种常见的数据存储格式,广泛用于数据交换,因为它简单...了解如何读取、写入和处理CSV文件,以及在特定场景(如使用Servlet进行文件导出)下的应用,将极大提升你的IT专业能力。
我们可以使用`java.io.BufferedReader`读取CSV文件,然后使用`javax.xml.transform.Transformer`将数据转换成XML。首先,解析CSV文件,将每一行转换为一个对象,然后创建XML元素并添加到树中。 方法二:使用第三方...
1. **创建SQLContext**:在Scala、Java或Python环境中,你需要先创建一个SQLContext实例。例如,在Scala中,你可以使用以下代码: ```scala import org.apache.spark.sql.SparkSession val spark = SparkSession...
以下是对OpenCSV在Java中读写CSV文件、自定义分隔符以及生成Javabeans的详细说明: 1. **读取CSV文件** - **Iterator方式**:通过创建`CSVReader`对象,然后使用`readNext()`方法逐行读取文件。例如: ```java ...
在Java编程中,CSV(Comma Separated Values)文件是一种常见的数据存储格式,它以逗号分隔每一列的数据,便于...同时,使用自定义的读写类可以提高代码的可维护性和可扩展性,使得在Java中操作CSV文件变得更加便捷。