@Sergio_Hunter

Как извлечь из поля таблицы, BLOB c JSON данными, и сделать декомпресс данных gzip?

Здравствуйте. Нужен совет с чего начать и как правильно реализовать. Есть база данных SQL, в которой таблица с полем data и типом BLOB. Нужно извлечь из этого поля BLOB c JSON данными и сделать декомпресс данных gzip(есть данные сжатые и нет в данном поле) и потом парсить как JSON. Буду благодатен за какую-нибудь помощь в реализации в данном коде.

package main

import (
	"database/sql"
	"encoding/csv"
	"fmt"
	"log"
	"os"
	_ "github.com/go-sql-driver/mysql"
	_"src/golang.org/x/crypto/acme"
)
func main() {
	db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:port)/database")

	if err != nil {
		panic(err.Error())
	}
	
	rows, err := db.Query(`SELECT field FROM table_1 ORDER BY table_2 LIMIT 10`)
	if err != nil {
		log.Fatal(err)
	}
	defer rows.Close()
	defer db.Close()

	file, err := os.Create("result.csv")
	if err != nil {
		fmt.Println(err)
	}
	defer file.Close()

	var (
		data string
	)

	cont := 0
	writer := csv.NewWriter(file)
	for rows.Next() {
		err := rows.Scan(&data)
		if err != nil {
			log.Fatal(err)
		}

		if cont == 0 {
			var record []string
			record = append(record, "Date")
			writer.Write(record)
			cont++

		}

		var record []string
		record = append(record, data)
		writer.Write(record)
		cont++

	}
	defer writer.Flush()
}
  • Вопрос задан
  • 940 просмотров
Пригласить эксперта
Ответы на вопрос 1
@x32net
var b []byte
rows.Scan(&b)
fmt.Printf("%s\n", b)

r, err := gzip.NewReader(&b)
io.Copy(os.Stdout, r)
r.Close()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы