java如何導入大數據量excel,現在導入單個excel有幾十萬的數據,會出現內

用一些好的框架工具 spring batch

② java 從資料庫中讀取大數據

這樣每次去讀取上百萬條數據,不崩掉才怪,
我的想法是,你分批去查,然後分批導出,
類似於分頁,每1000 或者更多為一批
按批次去執行,然後做一個進度條,按有多少批次為進度數進行導出
這樣應該會好很多
還可以做個緩存機制,按批次進行存儲,下次拿數據就直接從緩存中獲取

③ 怎麼使用java導出大數據為xml文件

dom4j可以試試,不知道你的數據量有多大,如果太大的話,我沒試過
xml文件是有規律的,可以把要導出的數據構造一下,

我有個簡單的代碼,在這分享一下,希望對LZ有用
package com.test.xml;

import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
public class Dom4JXML {

public void createXML() {
//用工廠類創建一個document實例
Document doc = DocumentHelper.createDocument();
//創建根元素emps
Element rootEle = doc.addElement("emps");
//添加註釋
rootEle.addComment("這是一個dom4j生成的xml文件");
//emps根節點下創建一個emp節點
Element empEle = rootEle.addElement("emp");
//emp添加屬性id="1"
empEle.addAttribute("id", "1");
//emp節點下創建一個name節點
Element nameEle = empEle.addElement("name");
//name節點下創建一個文本節點zhangsan
nameEle.setText("zhangsan");
//再為name節點創建一個兄弟節點
Element sexEle = empEle.addElement("sex");
sexEle.setText("man");
//將document中的內容寫入文件中
try {
Writer out = new FileWriter("F:\\emps.xml");
//格式化輸出,類型IE瀏覽一樣
OutputFormat format = OutputFormat.createPrettyPrint();
//OutputFormat format = OutputFormat.createCompactFormat();
format.setEncoding("UTF-8");
//創建寫出對象
XMLWriter writer = new XMLWriter(out,format);
writer.write(doc);
writer.close();
System.out.println("生成emps.xml成功。");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("失敗了。");
}
}

public static void main(String[] args) {
new Dom4JXML().createXML();
}
}

④ 如何用java jdbc 向資料庫表插入大數據量

一次性插入大量數據,只能使用循環,
如:游標,while 循環語句
下面介紹While 循環插入數據,
SQL 代碼如下:
IF OBJECT_ID('dbo.Nums') IS NOT NULL
DROP TABLE dbo.Nums;
GO
CREATE TABLE dbo.Nums(n INT NOT NULL PRIMARY KEY);
DECLARE @max AS INT, @rc AS INT;
SET @max = 5000000;
SET @rc = 1;
INSERT INTO Nums VALUES(1);
WHILE @rc * 2 <= @max
BEGIN
INSERT INTO dbo.Nums SELECT n + @rc FROM dbo.Nums;
SET @rc = @rc * 2;
END
INSERT INTO dbo.Nums SELECT n + @rc FROM dbo.Nums WHERE n + @rc <= @max;
--以上函數取自Inside SQL Server 2005: T-SQL Query一書。
INSERT dbo.Sample SELECT n, RAND(CAST(NEWID() AS BINARY(16))) FROM Nums

⑤ java poi Excel大數據量導入怎麼提高速度

記得有個屬性,

POI3.8的SXSSF包是XSSF的一個擴展版本,支持流處理,在生成大數據量的電子表格且堆空間有限時使用。SXSSF通過限制內存中可訪問的記錄行數來實現其低內存利用,當達到限定值時,新一行數據的加入會引起老一行的數據刷新到硬碟。
比如內存中限制行數為100,當行號到達101時,行號為0的記錄刷新到硬碟並從內存中刪除,當行號到達102時,行號為1的記錄刷新到硬碟,並從內存中刪除,以此類推。
rowAccessWindowSize代表指定的內存中緩存記錄數,默認為100,此值可以通過
new SXSSFWorkbook(int rowAccessWindowSize)或SXSSFSheet.setRandomAccessWindowSize(int windowSize)來設置。

⑥ 怎樣使用Java 開發大數據

未來10年將是大數據,人工智慧爆發的時代,到時將會有大量的企業需要藉助大數據,而Java最大的優勢就是它在大數據領域的地位,目前很多的大數據架構都是通過Java來完成的。
在這個Android、iOS相繼沒落,PHP相繼飽和的時候,只有Java大數據保持著旺盛的需求。那麼,Java大數據需要學習什麼技術呢?
首先我們要學習Java語言和Linux操作系統。很多人入門編程語言就是Java,你或許還不知道Java的方向有JavaSE、JavaEE、JavaME,學習Java大數據需要學習JavaSE、JavaEE。了解Java怎麼連接資料庫,掌握JDBC,學習Hibernate/Mybatis的原理,以及API,這樣可以增加你對Java操作資料庫的理解,因為這兩個技術的核心就是Java的反射加上JDBC的各種使用。
接下來就需要學習Linux操作系統,因為大數據相關軟體都是在Linux上運行的,學好Linux對你快速掌握大數據相關技術有很大的幫助,能讓你更好的理解hadoop、hive、hbase、spark等大數據軟體的運行環境和網路環境配置,能少踩很多坑,學會shell就能看懂腳本,這樣能更容易理解和配置大數據集群。還能讓你對以後新出的大數據技術學習起來更快。
最後當然是Hadoop的學習,這幾乎已經成為大數據的代名詞,Hadoop裡麵包括組件HDFS、MapRece和YARN,HDFS是存儲數據的地方,就像電腦的硬碟一樣,文件都存儲在這個上面,MapRece是對數據進行處理計算的,它有個特點就是不管多大的數據只要給它時間它就能把數據跑完,但是時間可能不是很快,所以它叫數據的批處理。YARN是體現Hadoop平台概念的重要組件,有了它大數據生態體系的其它軟體就能在hadoop上運行了,這樣就能更好的利用HDFS大存儲的優勢和節省更多的資源,比如我們就不用再單獨建一個spark的集群了,讓它直接跑在現有的hadoop yarn上面就可以了。
學了這些,可以勝任初級Java工程師了,當然還是有很有可以提高的地方,比如學習下python,可以用它來編寫網路爬蟲。這樣我們就可以自己造數據了,網路上的各種數據你高興都可以下載到你的集群上去處理。

⑦ java怎麼轉大數據

Hadoop之類的去看一下,還有大數據只是個概念具體技術還是要分的

⑧ 怎麼利用JAVA導入大數據量的文本文件數據到

首先從文件中讀取數據,每當讀完一條紀錄是,把它轉換成oracle的插入語句。你可以執行,也可以存在一個大字元串里,最後一起執行

⑨ Java如何處理大數據的

文件讀取:首先是一個文件上傳,數據入庫,10-200萬條不等,這里主要考慮到一次性讀取,JVM分配出來的棧內存不一定會夠(個人對內存這一塊還是處於一知半解的狀態,所以比較謹慎,若諸位大神有好的認知,希望評論留下地址分享一下),是依行讀取數據,設定一個批量值,當讀取的數據達到一定量之後,執行批量入庫操作,清空集合,再接著讀取。
//讀取文件內容
while((s = br.readLine())!=null){
//判斷是否達到單次處理量
if(num%leadingNum==0&&num!=0){
int a = stencDao.insertBatch(listBean);
if(a!=leadingNum){
flag = false;
}
//清空集合
listBean.clear();
}
String value = s.trim();
//將讀取到的內容放入集合中
if(!value.equals("")){
StencilCustomer bean = new StencilCustomer();
bean.setCustomerPhone(value);
bean.setLinkStencilId(id);
listBean.add(bean);
num ++;
}
}
數據處理:這里的思路也是將數據小化然後處理,這里使用了多線程,設定單個線程處理量,然後開啟多個線程處理,這里需要考慮你的伺服器的承載能力,如果線程開得太多了,處理不過來,會出現蹦死的情況。例如200萬數據,我開了20個線程,單個線程處理600條。
//建立一個線程池 ThreadPoolExecutor threadPool = new ThreadPoolExecutor(
minTaskNumber, maxTaskNumber, 3L, TimeUnit.SECONDS,
new ArrayBlockingQueue<Runnable>(minTaskNumber),
new ThreadPoolExecutor.DiscardOldestPolicy());
//當正在執行的線程數達到最大執行線程數的時候等待
boolean flag = true;
while(flag){
Thread.sleep(1000);//休眠2ms查詢一次
int c = threadPool.getActiveCount();//線程池中活動中的線程數量
if(c<maxTaskNumber){
flag = false;
}
}
上面的代碼是我對線程池的一個控制,控制伺服器一直最大線程執行,Thread.sleep(1000);用while的時候,這個休眠最好不要去掉,去掉之後很影響執行效率