无法插入超过150行

时间:2016-05-28 20:43:40

标签: sql go

我正在使用go-sql-driver / mysql从OMDB数据转储中插入大量电影。我正在解析数据并使用以下代码插入它:

_, err = database.Query("INSERT INTO `movies` (`name`, `year`, `release_date`, `full_plot`, `genre`, `imdb_id`) VALUES (?, ?, ?, ?, ?, ?)", movie.Name, movie.Year, movie.ReleaseDate, movie.FullPlot, movie.Genre, movie.IMDBID)

if err != nil {
    return false, nil
}
return true, nil

它可以工作,但只有150行。我做错了吗?

1 个答案:

答案 0 :(得分:1)

您的代码似乎丢弃了返回的错误值,您不应该这样做;优雅地处理它。查看错误是什么,如果您打开与DB的连接太多,则应使用数据库连接池并设置(*DB) SetMaxOpenConns值。

(*DB)Query通常用于返回行的SELECT语句,(*DB)Exec使用(*Stmt)ExecINSERT

我建议使用数据库连接池和(*sql.DB)Prepare来准备语句并使用预准备语句运行插入(甚至并发)。

请参阅https://golang.org/pkg/database/sql/#DB.Prepare