package main import ( "log" _ "github.com/lib/pq" "database/sql" "os" "fmt" _ "github.com/joho/godotenv/autoload" _ "github.com/go-sql-driver/mysql" ) type DogRow struct { Id int Author string Title string Format string Hash string Type string } func checkerr(err error) { if err != nil { log.Println(err) } } func dsn(dbName string) string { return fmt.Sprintf("%s:%s@tcp(%s)/%s", os.Getenv("MYSQLUSERNAME"), os.Getenv("MYSQLPASS"), os.Getenv("MYSQLHOSTNAME"), dbName) } func main() { log.Println("Log") psqlInfo := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=disable", os.Getenv("HOST"), os.Getenv("PORT"), os.Getenv("DBUSER"), os.Getenv("PASSWD"), os.Getenv("DBNAME")) pgdb, err := sql.Open("postgres", psqlInfo) checkerr(err) mysqldb, err := sql.Open("mysql", dsn(os.Getenv("MYSQLDBNAME"))) checkerr(err) rows, err := mysqldb.Query(`select * from pug;`) checkerr(err) defer rows.Close() for rows.Next() { var rowsel DogRow if err := rows.Scan(&rowsel.Id, &rowsel.Author, &rowsel.Title, &rowsel.Format, &rowsel.Hash, &rowsel.Type); err != nil { log.Fatal(err) } _, err = pgdb.Exec(`insert into dog_pictures (breed_id, author, title, picture_format, picture_hash, picture_url) values ((select breed_id from breed_manifest where breed = $1), $2, $3, $4, $5, $6)`, rowsel.Type, rowsel.Author, rowsel.Title, rowsel.Format, rowsel.Hash, os.Getenv("DOGURL") + rowsel.Type + "/" + rowsel.Hash + "." + rowsel.Format) if err != nil { log.Println(rowsel.Hash) } } }