Java---mysql---大資料
阿新 • • 發佈:2018-11-29
一、文字
首先建一個表
create table note(
id int,
note text
);
關於這個存放文字的note欄位,有很多資料型別表示其大小,如下:
最大為4G,text支援65536個位元組
在sqlyog中顯示錶,點選相應欄位部分如下:
點進去後如下直觀的操作即可:
圖中是我已經匯入好的文件了。
接下來就是java部分了
讀:
寫:(這裡的寫我就是直接指定了哪個檔案了, 實際上應該要可以選擇檔案的,這裡省略了)@Test //讀取大檔案欄位 public void readLob() throws Exception{ Connection con=ConnectionFactory.getConnection(); String sql="select * from note where id=1"; Statement st=con.createStatement(); ResultSet rs=st.executeQuery(sql); if (rs.next()){ InputStream in=rs.getAsciiStream(2);//讀取大文字欄位 BufferedReader br=new BufferedReader(new InputStreamReader(in)); String line=""; while ((line=br.readLine())!=null){ System.out.println(line); } } con.close(); }
@Test //寫大檔案欄位 public void writeLob() throws Exception{ Connection con=ConnectionFactory.getConnection(); String sql="insert into note values(?,?)"; PreparedStatement ps=con.prepareStatement(sql); ps.setInt(1, 3); InputStream in=LobDemoText.class.getClassLoader().getResourceAsStream("JdbcDemo.abc"); ps.setAsciiStream(2, in); ps.executeUpdate(); con.close(); }
二、圖片
我這裡為了方便演示就直接用指定字尾名的圖片了,實際操作時應該要獲取檔名的
同樣要先建表
create table img(
id int,
img blob
);
這個img欄位的資料型別也有很多種的,這裡簡單提一下就好,下面列出他的幾種:
TinyBlob 最大支援255
Blob 最大支援65k
MediumBlob 最大支援16M
LongBlob 最大支援4G
記得要選擇正確大小的資料型別,小了的話資料丟失
然後下圖同樣方法點進去
再如下操作
下面是java程式碼
讀:
寫: (這裡的寫我就是直接指定了哪個檔案了,實際上應該要可以選擇檔案的,這裡省略了)@Test //讀取大檔案欄位 public void readLob() throws Exception{ Connection con=ConnectionFactory.getConnection(); String sql="select * from img where id=1"; Statement st=con.createStatement(); ResultSet rs=st.executeQuery(sql); if (rs.next()){ InputStream in=rs.getBinaryStream(2); FileOutputStream out=new FileOutputStream("d:/a/a2.png"); byte buf[]=new byte[1024]; int len=0; while ((len=in.read(buf))!=-1){ out.write(buf, 0, len); } in.close(); out.close(); } con.close(); }
@Test //寫大檔案欄位
public void writeLob() throws Exception{
Connection con=ConnectionFactory.getConnection();
String sql="insert into img values(?,?)";
PreparedStatement ps=con.prepareStatement(sql);
ps.setInt(1, 3);
InputStream in=LobDemoImg.class.getClassLoader().getResourceAsStream("2.png");
ps.setBinaryStream(2, in);
ps.executeUpdate();
con.close();
}