Read from BRAM and write into 2D array in VHDL
Answering your first question. I'll edit this as more information is provided.
To add a short vector to the contents of a longer vector you can do this:
signal vector_long : std_logic_vector(9 downto 0);
signal vector_short : std_logic_vector(7 downto 0);

#place statement below in process
vector_long &lt;= &quot;00&quot; &amp; vector_short

This snippet will place 00 in vector_long at index 9 &amp; 8 while the value of vector_short is placed in the lower 8 bits.
In your case it would be more convenient to do this:
signal dout : std_logic_vector(9 downto 0) := (others =&gt; '0');

#move to component declaration
print_array : array_print
PORT MAP (
  clka =&gt; clk,
  wea =&gt; we_A,
  addra =&gt; addr,
  dina =&gt; din,
  douta =&gt; dout(7 downto 0)
);

As you can see, we can assign individual bits in the port map. There is also an initial setting on the dout signal so the two uppermost bits are not undefined. This is a simulation only construct and will be removed for synthesis. That is not a problem as in the real world, there are only 2 states in a register.
Other Errors
You have also made an error in the sensitivity list of your process. You only need clock in the sensitivity list (and rst too, if you intend to use it). This will cause very erratic behaviour as the process is run when one of the items in your sensitivity list changes.
As regards your use statements you should remove std_logic_unsigned as a library. It is a deprecated library and is no longer supported. Also, it contains functions with the same name as Numeric_std which will conflict. You need to do type conversions on the signals you are adding to or if you absolutely have to do vector arithmetic then you should use the VHDL-2008 library numeric_std_unsigned.
The next error is that you allow i to count past 7. This will cause a fatal error in simulation when you try to read from test(8) which does not exist. This means that j will never be updated as the simulation will stop. You should have got an error message about this in your simulator. Adding an elsif to check the value of i before reading from test(i) will prevent this. You then need to set i back to 0.
I'm assuming that you only intend to read from BRAM once? As it stands, this process will run over and over as you have not added any controls such as enable.