1. 程式人生 > >Java---mysql---大資料

Java---mysql---大資料

一、文字

首先建一個表

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();
	}