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)序列化存儲。
總的來說,需要時,能想到應該用哪些,能達到目的就可以了。