Skip to content

Commit

Permalink
handle files
Browse files Browse the repository at this point in the history
  • Loading branch information
mattn committed Aug 5, 2016
1 parent 30848eb commit 5d1debd
Showing 1 changed file with 41 additions and 24 deletions.
65 changes: 41 additions & 24 deletions qq.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ import (
"strings"
"unicode"

xenc "golang.org/x/text/encoding"

"github.com/mattn/go-encoding"
"github.com/mattn/go-runewidth"
_ "github.com/mattn/go-sqlite3"
Expand Down Expand Up @@ -188,7 +190,7 @@ func (qq *QQ) Import(r io.Reader, name string) error {
} else {
cn = rows[0]
}
s := `create table "` + strings.Replace(name, `'`, `\'`, -1) + `"(`
s := `create table '` + strings.Replace(name, `'`, `\'`, -1) + `'(`
for i, n := range cn {
if i > 0 {
s += `,`
Expand All @@ -201,7 +203,7 @@ func (qq *QQ) Import(r io.Reader, name string) error {
return err
}

s = `insert into "` + strings.Replace(name, `'`, `\'`, -1) + `"(`
s = `insert into '` + strings.Replace(name, `'`, `\'`, -1) + `'(`
for i, n := range cn {
if i > 0 {
s += `,`
Expand Down Expand Up @@ -292,14 +294,9 @@ func (qq *QQ) Close() error {
func main() {
flag.Parse()

var stdin io.Reader = os.Stdin
if *enc != "" {
ee := encoding.GetEncoding(*enc)
if ee == nil {
fmt.Fprintln(os.Stderr, "invalid encoding name:", *enc)
os.Exit(1)
}
stdin = ee.NewDecoder().Reader(stdin)
if *query == "" {
flag.Usage()
os.Exit(1)
}

qq, err := NewQQ()
Expand All @@ -308,23 +305,43 @@ func main() {
os.Exit(1)
}

err = qq.Import(stdin, "stdin")
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
var ee xenc.Encoding
if *enc != "" {
ee := encoding.GetEncoding(*enc)
if ee == nil {
fmt.Fprintln(os.Stderr, "invalid encoding name:", *enc)
os.Exit(1)
}
}

for _, fn := range flag.Args() {
fb := filepath.Base(fn)
f, err := os.Open(fn)
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
err = qq.Import(f, fb)
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
if fn == "-" {
var stdin io.Reader = os.Stdin
if ee != nil {
stdin = ee.NewDecoder().Reader(stdin)
}
err = qq.Import(stdin, "stdin")
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
} else {
fb := filepath.Base(fn)
f, err := os.Open(fn)
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
var file io.Reader = f
if ee != nil {
file = ee.NewDecoder().Reader(file)
}
err = qq.Import(f, fb)
f.Close()
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}
}

Expand Down

0 comments on commit 5d1debd

Please sign in to comment.