-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgotodb.go
More file actions
68 lines (55 loc) · 1.52 KB
/
gotodb.go
File metadata and controls
68 lines (55 loc) · 1.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package main
import "fmt"
import "os"
import "net"
func main() {
if len(os.Args) < 5 {
fmt.Println("not enough arguments")
fmt.Println("usage: go run gotodb.go <table> <file> <delimeter> <server>")
return
}
table_name := os.Args[1]
file_name := os.Args[2]
delim := os.Args[3][0]
server := os.Args[4]
conn, e_conn := net.Dial("tcp", server)
if e_conn != nil {
fmt.Println("error connecting to database: ", e_conn.Error())
return
}
defer conn.Close()
rec := []byte("insert]" + table_name + "]")
file_handle, e_file := os.Open(file_name)
if e_file != nil {
fmt.Println("error opening file: ", e_file.Error())
}
defer file_handle.Close()
buffer := make([]byte, 1)
_, e_file = file_handle.Read(buffer)
for e_file == nil {
if buffer[0] == delim {
rec = append(rec, ']')
} else if buffer[0] == '\n' {
rec = append(rec, '\n')
send(rec, conn)
rec = rec[0:8+len(table_name)]
} else {
rec = append(rec, buffer[0])
}
_, e_file = file_handle.Read(buffer)
}
}
func send(rec []byte, conn net.Conn) {
_, e_conn := conn.Write(rec)
if e_conn != nil {
fmt.Println(e_conn.Error())
return
}
response := make([]byte, 99)
_, e_conn = conn.Read(response)
if e_conn != nil {
fmt.Println(e_conn.Error())
return
}
fmt.Print(string(response))
}