java如何从数据库读取数据并写入txt文件?

java如何从数据库读取数据并写入txt文件?,第1张

写Java程序时经常碰到要读如txt或写入txt文件的情况,但是由于要定义好多变量,经常记不住,每次都要查,特此整理一下,简单易用,方便好懂!

[java] view plain copy

package edu.thu.keyword.test  

  

import java.io.File  

import java.io.InputStreamReader  

import java.io.BufferedReader  

import java.io.BufferedWriter  

import java.io.FileInputStream  

import java.io.FileWriter  

  

public class cin_txt {  

    static void main(String args[]) {  

        try { // 防止文件建立或读取失败,用catch捕捉错误并打印,也可以throw  

  

            /* 读入TXT文件 */  

            String pathname = "D:\\twitter\\13_9_6\\dataset\\en\\input.txt" // 绝对路径或相对路径都可以,这里是绝对路径,写入文件时演示相对路径  

            File filename = new File(pathname) // 要读取以上路径的input。txt文件  

            InputStreamReader reader = new InputStreamReader(  

                    new FileInputStream(filename)) // 建立一个输入流对象reader  

            BufferedReader br = new BufferedReader(reader) // 建立一个对象,它把文件内容转成计算机能读懂的语言  

            String line = ""  

            line = br.readLine()  

            while (line != null) {  

                line = br.readLine() // 一次读入一行数据  

            }  

  

            /* 写入Txt文件 */  

            File writename = new File(".\\result\\en\\output.txt") // 相对路径,如果没有则要建立一个新的output。txt文件  

            writename.createNewFile() // 创建新文件  

            BufferedWriter out = new BufferedWriter(new FileWriter(writename))  

            out.write("我会写入文件啦\r\n") // \r\n即为换行  

            out.flush() // 把缓存区内容压入文件  

            out.close() // 最后记得关闭文件  

  

        } catch (Exception e) {  

            e.printStackTrace()  

        }  

    }  

}

Java中将txt文件导入到mysql基本的思路就是先使用I/O *** 作流获取到文件具体信息,然后将信息拼接成mysql插入到数据库中,示例如下:

1、先读取txt文件的内容,文件内容可以按照一定的规律进行排列,这样程序读取就方便。

import java.io.IOException

import java.io.RandomAccessFile

import java.io.UnsupportedEncodingException

import java.text.SimpleDateFormat

import java.util.Date

import java.util.regex.Matcher

import java.util.regex.Pattern

import com.config.Constants

import com.utils.UUIDUtil

/**

* txt文本数据 采集类

*

* @see

*/

public class UserDataGather {

public static final String TXT_FILE_PATH = "D://testUser.txt"

public static final String openFileStyle = "r"

public static final String fieldLimitChar = "."

public static final int fieldAllCount = 1

public static final String default_password = "PTMD0309"

public Integer count = 0

private String FltNum

public String UUID

/**

* 功能:解析文本文件

*/

public void loadFile() {

try {

RandomAccessFile raf = new RandomAccessFile(TXT_FILE_PATH, openFileStyle)

String line_record = raf.readLine()

while (line_record != null) {

// 解析每一条记录

parseRecord(line_record)

line_record = raf.readLine()

}

} catch (Exception e) {

e.printStackTrace()

}

}

/**

* 功能:具体解析每一条记录,这里可以增加很多对记录的解析判断条件,如是否为字母、

*/

@SuppressWarnings("static-access")

private void parseRecord(String line_record) throws Exception {

//拆分记录

//String[] fields = line_record.split(fieldLimitChar)

//System.out.println(tranStr(line_record)+"Ok")

String temp = line_record.substring(line_record.indexOf(fieldLimitChar, 0), line_record.indexOf(" ", line_record.indexOf(fieldLimitChar, 0)))

//if (fields.length == fieldAllCount) {

//

FltNum = tranStr(temp).trim().replace(fieldLimitChar,"").replace(" ","")

//System.out.println(FltNum)

if(FltNum.length()>=4){

if(!isNumeric(FltNum)){

// System.out.println(generateSql(FltNum)[0].toString())

// System.out.println(generateSql(FltNum)[1].toString())

count++

String[] temp1 = generateSql(FltNum)

MyFile mf = new MyFile()

mf.creatTxtFile("insertPinTuUserSql")

mf.writeTxtFile(temp1[0].toString())

mf.creatTxtFile("UUID")

mf.writeTxtFile(temp1[1].toString()+",")

}

}else if(FltNum.length() ==2 || FltNum.length() ==3){

if(!isNumeric(FltNum)){

if(!isTwoCharacter(FltNum)){

// System.out.println(generateSql(FltNum)[0].toString())

// System.out.println(generateSql(FltNum)[1].toString())

count++

String[] temp2 = generateSql(FltNum)

MyFile mf = new MyFile()

mf.creatTxtFile("insertPinTuUserSql")

mf.writeTxtFile(temp2[0].toString())

mf.creatTxtFile("UUID")

mf.writeTxtFile(temp2[1].toString()+",")

}

}

}

//InsertDB db = new InsertDB()

//

//db.insertDB(FltNum)

//}

}

@SuppressWarnings("static-access")

public String[] generateSql(String userName) throws IOException{

StringBuffer sbf = new StringBuffer()

String[] str = new String[2]

String uuid = UUIDUtil.getUUID()

sbf.append("insert into user values('"+uuid+"','" + userName +"','"+default_password+"',"+Constants.ENABLED+","+Constants.NUllDELETE+","+Constants.AUDITING+",'"+uuid+"@164.com','"+formatDateTime()+"',"+Constants.REGEDIT_USER+")/n")

sbf.append("insert into users values('"+uuid+"',"+ null+","+Constants.MALE+","+null+","+null+",'60.176.36.250','"+formatDateTime()+"',"+null+","+null+","+null+","+null+","+null+","+null+",0,"+null+","+null+",0,0,0,'"+formatDateTime()+"','1036',0,"+null+","+null+","+null+","+null+","+null+",'11',"+null+","+null+","+null+","+null+","+null+")/n")

sbf.append("insert into user_user_group values('"+uuid+"','"+ uuid +"','"+Constants.PERSONAL_USER+"')/n")

UUID = uuid

str[0]=sbf.toString()

str[1]=UUID

return str

}

public String formatDateTime(){

Date date = new Date()

/**

* 时间格式化2009-12-31 09:04:31

*/

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")

System.out.println(sdf.format(date))

return sdf.format(date)

}

private String tranStr(String oldstr) {

String newstr = ""

try {

newstr = new String(oldstr.getBytes("ISO-8859-1"), "utf-8")

} catch (UnsupportedEncodingException e) {

e.printStackTrace()

}

return newstr

}

public static boolean isNumeric(String str){

Pattern pattern = Pattern.compile("[0-9]*")

return pattern.matcher(str).matches()

}

public static boolean isTwoCharacter(String str){

String regEx="[a-zA-Z0-9]{2,3}"

Pattern p=Pattern.compile(regEx)

Matcher m=p.matcher(str)

return m.find()

}

}

2、连接数据库执行数据导入

import java.sql.DriverManager

import java.sql.ResultSet

import com.mysql.jdbc.Connection

import com.mysql.jdbc.Statement

/**

* 插入数据库 生成sql语句

*

* created on Mar 8, 2010

* @see

*/

public class InsertDB {

private static final String user = "pintu"

private static final String pwd = "pintu"

private static final String url = "jdbc:mysql://192.168.10.6:3306/pintu"

private static final String driver = "com.mysql.jdbc.Driver"

public static Connection getCon() {

Connection con = null

try {

Class.forName(driver).newInstance()

con = (Connection) DriverManager.getConnection(url, user, pwd)

if (con != null) {

System.out.println("你已连接到数据库:" + con.getCatalog())

}

} catch (Exception e) {

System.out.println("连接数据库失败!")

e.printStackTrace()

}

return con

}

public boolean insertDB(String FltNum) {

Connection con = null

Statement stm = null

boolean flag = false

String sql = "insert into t_FltPsgInfo values('" + FltNum +

//"','"

//+ FltLine + "','" + FltDate + "','" + PsgName + "','" + PsgType

//

//+ "','" + PsgSex + "','" + PsgCab + "','" + PsgSeatNo + "','"

//

//+ PsgInfo +

"')"

try {

con = getCon()

stm = (Statement) con.createStatement()

int i = stm.executeUpdate(sql)

if (i >0) {

flag = true

System.out.println(flag + "插入数据成功!")

}

} catch (Exception e) {

flag = false

e.printStackTrace()

} finally {

close(null, stm, con)

}

return flag

}

//关闭相关连接

public void close(ResultSet rs, Statement stm, Connection con) {

if (rs != null)

try {

rs.close()

} catch (Exception e) {

e.printStackTrace()

}

if (stm != null)

try {

stm.close()

} catch (Exception e) {

e.printStackTrace()

}

if (con != null)

try {

con.close()

} catch (Exception e) {

e.printStackTrace()

}

}

}

BufferedReader input

try {

String s = new String()

input = new BufferedReader(new FileReader("f:\\123.txt"))

while ((s = input.readLine()) != null) { // 判断是否读到了最后一行

String info[] = s.split(" ")

System.out.println( info[0] + " " + info[1] + " " + info[2] )

}

input.close()

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace()

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

把info[0] + " " + info[1] + " " + info[2] 这三个值放在insert语句里就行了 经过测试


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6782536.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存