Mercurial > mercurial > hgweb_rsearcher.cgi
diff go/extsql.go @ 12:240752cbe11b
db-upload.(by go)
author | pyon@macmini |
---|---|
date | Tue, 13 Nov 2018 21:11:20 +0900 |
parents | |
children | f5ffc34f045a |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/go/extsql.go Tue Nov 13 21:11:20 2018 +0900 @@ -0,0 +1,83 @@ +/* + extsql.go : manipulate sqlite3. + Version : 0.1 + Last Change: 2018-11-13 火 15:22:56. + + install to: rsearcher_root/ +*/ +package main + +import ( + "fmt" + "flag" + "log" + "os" + "os/exec" + "strings" +) + +var version string +var sqlite string + +func init() { + version = "0.1" // first version + sqlite = "sqlite3.exe" +} + +func main() { + var printver = flag.Bool( "v", false, "print version" ) // print version + flag.Parse() + + // print version + if *printver { + fmt.Println( "mngdb [ ver", version, "]" ) + os.Exit( 0 ) + } + + if flag.NArg() != 3 { + fmt.Fprint( os.Stderr, "argument error.\n" ) + fmt.Fprint( os.Stderr, "> extsql.exe hhs.db ccn.db 20160401\n" ) + os.Exit( 1 ) + } + hhs := flag.Args()[0] + ccn := flag.Args()[1] + ymd := flag.Args()[2] + + // make idnex.db + sql := "select hhsno, date from path where date >= " + ymd + ccndb, err := exec.Command( sqlite, ccn, sql ).Output() + if err != nil { + log.Fatal( err ) + } + + f, _ := os.Create( "index.db" ) + defer f.Close() + + m := make( map[string]bool ) + for _, cols := range strings.Split( string( ccndb ), "\n" ) { + col := strings.Split( cols, "|" ) + if len( col ) == 2 { + buf := fmt.Sprintf( "%s:%s\n", col[0], col[1] ) + f.WriteString( buf ) + m[ col[0] ] = true + } + } + + // make hhs.csv + sql = "select * from hhs_master" + hhsdb, err := exec.Command( sqlite, hhs, sql ).Output() + if err != nil { + log.Fatal( err ) + } + + f, _ = os.Create( "hhs.csv" ) + for _, cols := range strings.Split( string( hhsdb ), "\n" ) { + col := strings.Split( cols, "|" ) + if _, ok := m[ col[0] ]; ok == true { + buf := strings.Replace( cols, "|", ",", -1 ) + "\n" + f.WriteString( buf ) + } + } + f.Close() +} +