comparison go/extsql.go @ 12:240752cbe11b

db-upload.(by go)
author pyon@macmini
date Tue, 13 Nov 2018 21:11:20 +0900
parents
children f5ffc34f045a
comparison
equal deleted inserted replaced
11:799b6008db8e 12:240752cbe11b
1 /*
2 extsql.go : manipulate sqlite3.
3 Version : 0.1
4 Last Change: 2018-11-13 火 15:22:56.
5
6 install to: rsearcher_root/
7 */
8 package main
9
10 import (
11 "fmt"
12 "flag"
13 "log"
14 "os"
15 "os/exec"
16 "strings"
17 )
18
19 var version string
20 var sqlite string
21
22 func init() {
23 version = "0.1" // first version
24 sqlite = "sqlite3.exe"
25 }
26
27 func main() {
28 var printver = flag.Bool( "v", false, "print version" ) // print version
29 flag.Parse()
30
31 // print version
32 if *printver {
33 fmt.Println( "mngdb [ ver", version, "]" )
34 os.Exit( 0 )
35 }
36
37 if flag.NArg() != 3 {
38 fmt.Fprint( os.Stderr, "argument error.\n" )
39 fmt.Fprint( os.Stderr, "> extsql.exe hhs.db ccn.db 20160401\n" )
40 os.Exit( 1 )
41 }
42 hhs := flag.Args()[0]
43 ccn := flag.Args()[1]
44 ymd := flag.Args()[2]
45
46 // make idnex.db
47 sql := "select hhsno, date from path where date >= " + ymd
48 ccndb, err := exec.Command( sqlite, ccn, sql ).Output()
49 if err != nil {
50 log.Fatal( err )
51 }
52
53 f, _ := os.Create( "index.db" )
54 defer f.Close()
55
56 m := make( map[string]bool )
57 for _, cols := range strings.Split( string( ccndb ), "\n" ) {
58 col := strings.Split( cols, "|" )
59 if len( col ) == 2 {
60 buf := fmt.Sprintf( "%s:%s\n", col[0], col[1] )
61 f.WriteString( buf )
62 m[ col[0] ] = true
63 }
64 }
65
66 // make hhs.csv
67 sql = "select * from hhs_master"
68 hhsdb, err := exec.Command( sqlite, hhs, sql ).Output()
69 if err != nil {
70 log.Fatal( err )
71 }
72
73 f, _ = os.Create( "hhs.csv" )
74 for _, cols := range strings.Split( string( hhsdb ), "\n" ) {
75 col := strings.Split( cols, "|" )
76 if _, ok := m[ col[0] ]; ok == true {
77 buf := strings.Replace( cols, "|", ",", -1 ) + "\n"
78 f.WriteString( buf )
79 }
80 }
81 f.Close()
82 }
83