Documentation
¶
Overview ¶
Package lines provides a virtual table to read large files line-by-line.
Example ¶
db, err := driver.Open(":memory:", func(c *sqlite3.Conn) error { lines.Register(c) return nil }) if err != nil { log.Fatal(err) } defer db.Close() // https://storage.googleapis.com/quickdraw_dataset/full/simplified/calendar.ndjson f, err := os.Open("calendar.ndjson") if err != nil { log.Fatal(err) } defer f.Close() rows, err := db.Query(` SELECT line ->> '$.countrycode' as countrycode, COUNT(*) FROM lines_read(?) GROUP BY 1 ORDER BY 2 DESC LIMIT 5`, sqlite3.Pointer(f)) if err != nil { log.Fatal(err) } defer rows.Close() var countrycode sql.RawBytes var count int for rows.Next() { err := rows.Scan(&countrycode, &count) if err != nil { log.Fatal(err) } fmt.Printf("%s: %d\n", countrycode, count) } if err := rows.Err(); err != nil { log.Fatal(err) } // Sample output: // US: 141001 // GB: 22560 // CA: 11759 // RU: 9250 // DE: 8748
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Register ¶
func Register(db *sqlite3.Conn)
Register registers the lines and lines_read virtual tables. The lines virtual table reads from a database blob or text. The lines_read virtual table reads from a file or an io.ReaderAt.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.