| 1 5 package org.h2.test.db; 6 7 import java.io.File ; 8 import java.io.RandomAccessFile ; 9 import java.sql.Connection ; 10 import java.sql.ResultSet ; 11 import java.sql.ResultSetMetaData ; 12 import java.sql.Statement ; 13 14 import org.h2.test.TestBase; 15 import org.h2.tools.Csv; 16 17 public class TestCsv extends TestBase { 18 19 public void test() throws Exception { 20 testAsTable(); 21 testWriteRead(); 22 testRead(); 23 } 24 25 private void testAsTable() throws Exception { 26 deleteDb("csv"); 27 Connection conn = getConnection("csv"); 28 Statement stat = conn.createStatement(); 29 stat.execute("call csvwrite('"+BASE_DIR+"/test.csv', 'select 1 id, ''Hello'' name')"); 30 ResultSet rs = stat.executeQuery("select name from csvread('"+BASE_DIR+"/test.csv')"); 31 check(rs.next()); 32 check(rs.getString(1), "Hello"); 33 checkFalse(rs.next()); 34 rs = stat.executeQuery("call csvread('"+BASE_DIR+"/test.csv')"); 35 check(rs.next()); 36 check(rs.getInt(1), 1); 37 check(rs.getString(2), "Hello"); 38 checkFalse(rs.next()); 39 new File (BASE_DIR+"/test.csv").delete(); 40 conn.close(); 41 42 } 43 44 public void testRead() throws Exception { 45 File f = new File (BASE_DIR + "/test.csv"); 46 f.delete(); 47 RandomAccessFile file = new RandomAccessFile (f, "rw"); 48 file.write("a,b,c,d\n201,-2,0,18\n, \"abc\"\"\" ,,\"\"\n 1 ,2 , 3, 4 \n5, 6, 7, 8".getBytes()); 49 file.close(); 50 ResultSet rs = Csv.getInstance().read(BASE_DIR + "/test.csv", null, "UTF8"); 51 ResultSetMetaData meta = rs.getMetaData(); 52 check(meta.getColumnCount(), 4); 53 check(meta.getColumnLabel(1), "a"); 54 check(meta.getColumnLabel(2), "b"); 55 check(meta.getColumnLabel(3), "c"); 56 check(meta.getColumnLabel(4), "d"); 57 check(rs.next()); 58 check(rs.getString(1), "201"); 59 check(rs.getString(2), "-2"); 60 check(rs.getString(3), "0"); 61 check(rs.getString(4), "18"); 62 check(rs.next()); 63 check(rs.getString(1), null); 64 check(rs.getString(2), "abc\""); 65 check(rs.getString(3), null); 66 check(rs.getString(4), ""); 67 check(rs.next()); 68 check(rs.getString(1), "1"); 69 check(rs.getString(2), "2"); 70 check(rs.getString(3), "3"); 71 check(rs.getString(4), "4"); 72 check(rs.next()); 73 check(rs.getString(1), "5"); 74 check(rs.getString(2), "6"); 75 check(rs.getString(3), "7"); 76 check(rs.getString(4), "8"); 77 checkFalse(rs.next()); 78 79 } 87 88 public void testWriteRead() throws Exception { 89 90 deleteDb("csv"); 91 92 Connection conn = getConnection("csv"); 93 Statement stat = conn.createStatement(); 94 stat.execute("CREATE TABLE TEST(ID IDENTITY, NAME VARCHAR)"); 95 int len = 100; 96 for(int i=0; i<len; i++) { 97 stat.execute("INSERT INTO TEST(NAME) VALUES('Ruebezahl')"); 98 } 99 Csv.getInstance().write(conn, BASE_DIR + "/testRW.csv", "SELECT * FROM TEST", "UTF8"); 100 ResultSet rs = Csv.getInstance().read(BASE_DIR + "/testRW.csv", null, "UTF8"); 101 ResultSetMetaData meta = rs.getMetaData(); 103 check(2, meta.getColumnCount()); 104 for(int i=0; i<len; i++) { 105 rs.next(); 106 check(rs.getString("ID"), "" + (i+1)); 107 check(rs.getString("NAME"), "Ruebezahl"); 108 } 109 checkFalse(rs.next()); 110 rs.close(); 111 conn.close(); 112 113 } 114 115 } 116 | Popular Tags |