Example #1
0
func TestOpen(t *testing.T) {
	db, err := csvdriver.Conn{
		File:    "testdata/simple.csv",
		Comment: '#',
		Comma:   ';',
	}.Open()

	if err != nil {
		t.Errorf("error opening CSV file: %v\n", err)
		return
	}
	defer db.Close()

	tx, err := db.Begin()
	if err != nil {
		t.Errorf("error starting tx: %v\n", err)
		return
	}
	defer tx.Commit()

	/*
		err = db.Ping()
		if err != nil {
			t.Fatalf("error pinging db: %v\n", err)
		}
	*/

	rows, err := tx.Query("select var1, var2, var3 from csv order by id();")
	if err != nil {
		t.Errorf("error querying db: %v\n", err)
		return
	}
	defer rows.Close()

	for rows.Next() {
		var (
			i int64
			f float64
			s string
		)
		err = rows.Scan(&i, &f, &s)
		if err != nil {
			t.Errorf("error scanning db: %v\n", err)
			return
		}
		fmt.Printf("i=%v f=%v s=%q\n", i, f, s)
	}

	err = rows.Close()
	if err != nil {
		t.Errorf("error closing rows: %v\n", err)
		return
	}

	err = db.Close()
	if err != nil {
		t.Errorf("error closing db: %v\n", err)
		return
	}
}