view go/extsql.go @ 16:b651aa41b9d4 default tip

hhsinfo method (server)
author pyon@macmini
date Mon, 15 Jul 2019 07:03:05 +0900
parents f5ffc34f045a
children
line wrap: on
line source

/*
 extsql.go   : manipulate sqlite3.
 Version    : 0.1
 Last Change: 2018-11-14 水 13:48:23.

 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( "extsql [ 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.tmp" )
	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()
}