io流存储mysql
String str="将txt文件内容写到一个字符串中";
然后用
insert str into table
这样的insert语句插入到数据库中,当然前提条件是数据库中要存在这样的一个数据库表。
对txt文件进行分割,逐个读进数据库,可能比较耗时!
Ⅱ 大数据培训学校学哪些内容
首先我们要了解Java语言和Linux操作系统,这两个是学习大数据的基础,学习的顺序不分前后。
大数据
大数据
Java :只要了解一些基础即可,做大数据不需要很深的Java 技术,学java SE 就相当于有学习大数据基础。
Linux:因为大数据相关软件都是在Linux上运行的,所以Linux要学习的扎实一些,学好Linux对你快速掌握大数据相关技术会有很大的帮助,能让你更好的理解hadoop、hive、hbase、spark等大数据软件的运行环境和网络环境配置,能少踩很多坑,学会shell就能看懂脚本这样能更容易理解和配置大数据集群。还能让你对以后新出的大数据技术学习起来更快。
Hadoop:这是现在流行的大数据处理平台几乎已经成为大数据的代名词,所以这个是必学的。Hadoop里面包括几个组件HDFS、MapRece和YARN,HDFS是存储数据的地方就像我们电脑的硬盘一样文件都存储在这个上面,MapRece是对数据进行处理计算的,它有个特点就是不管多大的数据只要给它时间它就能把数据跑完,但是时间可能不是很快所以它叫数据的批处理。
Zookeeper:这是个万金油,安装Hadoop的HA的时候就会用到它,以后的Hbase也会用到它。它一般用来存放一些相互协作的信息,这些信息比较小一般不会超过1M,都是使用它的软件对它有依赖,对于我们个人来讲只需要把它安装正确,让它正常的run起来就可以了。
Mysql:我们学习完大数据的处理了,接下来学习学习小数据的处理工具mysql数据库,因为一会装hive的时候要用到,mysql需要掌握到什么层度那?你能在Linux上把它安装好,运行起来,会配置简单的权限,修改root的密码,创建数据库。这里主要的是学习SQL的语法,因为hive的语法和这个非常相似。
Sqoop:这个是用于把Mysql里的数据导入到Hadoop里的。当然你也可以不用这个,直接把Mysql数据表导出成文件再放到HDFS上也是一样的,当然生产环境中使用要注意Mysql的压力。
Hive:这个东西对于会SQL语法的来说就是神器,它能让你处理大数据变的很简单,不会再费劲的编写MapRece程序。有的人说Pig那?它和Pig差不多掌握一个就可以了。
Oozie:既然学会Hive了,我相信你一定需要这个东西,它可以帮你管理你的Hive或者MapRece、Spark脚本,还能检查你的程序是否执行正确,出错了给你发报警并能帮你重试程序,最重要的是还能帮你配置任务的依赖关系。我相信你一定会喜欢上它的,不然你看着那一大堆脚本,和密密麻麻的crond是不是有种想屎的感觉。
Hbase:这是Hadoop生态体系中的NOSQL数据库,他的数据是按照key和value的形式存储的并且key是唯一的,所以它能用来做数据的排重,它与MYSQL相比能存储的数据量大很多。所以他常被用于大数据处理完成之后的存储目的地。
Kafka:这是个比较好用的队列工具,队列是干吗的?排队买票你知道不?数据多了同样也需要排队处理,这样与你协作的其它同学不会叫起来,你干吗给我这么多的数据(比如好几百G的文件)我怎么处理得过来,你别怪他因为他不是搞大数据的,你可以跟他讲我把数据放在队列里你使用的时候一个个拿,这样他就不在抱怨了马上灰流流的去优化他的程序去了,因为处理不过来就是他的事情。而不是你给的问题。当然我们也可以利用这个工具来做线上实时数据的入库或入HDFS,这时你可以与一个叫Flume的工具配合使用,它是专门用来提供对数据进行简单处理,并写到各种数据接受方(比如Kafka)的。
Spark:它是用来弥补基于MapRece处理数据速度上的缺点,它的特点是把数据装载到内存中计算而不是去读慢的要死进化还特别慢的硬盘。特别适合做迭代运算,所以算法流们特别稀饭它。它是用scala编写的。Java语言或者Scala都可以操作它,因为它们都是用JVM的。
Ⅲ mysql连接数据库的问题。已连接成功,如何更改数据库文件的位置
这个代码是链接3306端口告诉mysql,我要用你的hello这个数据库,并不是指定数据库的路径。mysql的数据存储文件并不能随便拷贝到其他目录的。myisam表还好,只要在存储目录,还可以识别,innodb的话,是会有问题的。
Ⅳ 我要将excel里3000条数据怎样用最短的时间导入到mysql中
jsp中是可以潜入java代码的,所以你用java怎么做,都可以搬到jsp中去,实现思路是:读出数据库中数据,利用io流来存入txt中,excel就利用jxl.jar包 如果回答对您有用,请及时采纳。
Ⅳ JAVA怎么把存入mysql数据库按指定目录读到本地磁盘
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* java读取数据库内容并存放到文件中
*
* @author young
*
*/
public class JavaToSQLTest {
public static void main(String[] args) throws FileNotFoundException {
// // 关联文件
// File file = new File("F:\\workspace\\one\\test.txt");
// // java IO流和文件关联
// PrintWriter pw = new PrintWriter(file);
PrintWriter pw = null;
FileWriter fw = null;
// 定义数据库驱动
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
// 数据库连接URL
String url = "jdbc:sqlserver://localhost:1433;DatabaseName = soft";
Connection conn = null;
String id;
String fname, lname;
try {
// pw.println("emp_id\t\tfname\t\tlname");
// pw.println("------\t\t------\t\t------");
// 加载数据库驱动
Class.forName(driver);
// 创建数据库连接
conn = DriverManager.getConnection(url, "sa", "1234");
// 创建预编译SQL对象
PreparedStatement ps = conn
.prepareStatement("select emp_id, fname, lname from emps");
// 执行SQL,获取结果集rs
ResultSet rs = ps.executeQuery();
// 处理结果集
while (rs.next()) {
id = rs.getString("emp_id");
fname = rs.getString("fname");
lname = rs.getString("lname");
String filename = id + ".txt";
// 关联文件
File file = new File(filename);
if(!file.exists()){
// 判断文件不存在就new新文件,写数据
try {
file.createNewFile();
// java IO流和文件关联
pw = new PrintWriter(file);
pw.print(id + "\t");
pw.print(fname + "\t\t");
pw.print(lname);
pw.println();
pw.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
// 判断文件存在,就以FileWriter文件追加的方式写文件
try {
fw = new FileWriter(filename,true);
fw.write(id + "\t");
fw.write(fname + "\t\t");
fw.write(lname);
fw.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("加载数据库失败");
System.exit(1);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("数据库连接错误");
System.exit(1);
} finally {
if (conn != null) {
try {
// 关闭数据库连接
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (pw != null) {
// 关闭IO流
pw.close();
}
if(fw != null){
try {
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
Ⅵ java的IO流中可以通过自定义一个数组来存储数据,为什么还要使用缓存区呢
BufferedReader br = new BufferedReader(new FileReader(new File("123.txt")));
BufferedWriter bw = new BufferedWriter(new FileWriter(new File("456.txt")));
char[] ch = new char[1024];
int len;
while((len = br.read(ch)) != -1){
bw.write(ch,0,len);
}
题主的疑惑是在上面第1行和第3行中的代码里是吧?
问:为什么第1行代码的BufferedReader缓冲流中已经定义了一个大小为8192的char[]数组,而第3行代码中还要定义一个大小为1024大小的char[]数组作为缓冲区?
答:BufferedReader中8192大小的char[]数组和自定义的1024大小的char[]数组不是在同一个环节作用的。
举个生活中的例子说明:BufferedReader中8192大小的char[]数组相当于快递站,自定义的1024大小的char[]数组相当于快递小哥骑的三轮车。快递小哥每次取一个快递后并不是立即往快递站送,而是先放到三轮车中,等到三轮车装满了,再一次性往快递站送;等到快递小哥送了8次,把快递站也装满了,再一次性把快递站中的货物全部送走。不知上面的解释有没有说清楚。
Ⅶ java用MySql 单击备份按钮实现备份该怎么写啊!
首先设置mysql环境变量
package com.vote.utils;
import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class BackupMysql {
public static void main(String[] args) {
//new Backup().start();
//new Recovery().start();
}
static class Backup extends Thread {
public void run() {
String user = "root"; // Database Account
String password = "root"; // Login Password
String database = "数据库"; // Need to back up the Database name
String filepath = "d:\\数据库bak\\" + getFileName(database,".bak"); // Address of the backup path
File savefile = new File("d:\\数据库bak\\", "aa.txt");
if(!savefile.getParentFile().exists()) savefile.getParentFile().mkdirs();
String command = "mysqlmp " + database + " -h localhost " + " -u " + user + " -p" + password + " --default-character-set=utf8 --result-file=" + filepath;
try {
Runtime.getRuntime().exec(command);
System.out.println("Successful data backup of " + database);
}catch(IOException e) {
e.printStackTrace();
}
}
private String getFileName(String soure,String suffix) {
String fileName = null;
DateFormat df = new SimpleDateFormat(".yyyy.MM.dd.hh.mm.ss.");
String dfs = df.format(new Date());
String rans = ((int)(Math.random() * 100) + 1) + "";
int rlen = rans.length();
if(rlen == 1){
rans = "0" + rans;
}
fileName = soure + dfs + Integer.toHexString(Integer.parseInt(rans)) + suffix;
return fileName;
}
}
static class Recovery extends Thread {
public void run() {
String user = "root"; // Database Account
String password = "root"; // Login Password
String database = "数据库"; // Need to back up the Database name
String filepath = "d:\\数据库bak\\数据库.2011.10.27.12.56.04.50.bak"; // Address of the recovery path
String command = " -h localhost " + " -u " + user + " -p" + password;
String cmd[] = {"cmd","/c","mysql " + command + " " + database + " < " + filepath};
try {
Runtime.getRuntime().exec("mysqladmin " + command + " create " + database);
Runtime.getRuntime().exec(cmd);
}catch(IOException e) {
e.printStackTrace();
}
}
}
}
Ⅷ IO流可以用来做什么
IO常常用于:
(1)网络IO。Socket传输二进制数据。比如response.getWriter().write()这个也算网络IO;
(2)文件IO。如FileInputStream、FileReader、ImageReader......
(3)序列化存储。
总的来说,需要时,能想到应该用哪些,能达到目的就可以了。