sql - 不能插入超过 150 行

标签 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 行。我做错了什么吗?

最佳答案

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

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

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

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

关于sql - 不能插入超过 150 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37503585/

相关文章:

php - 整个页面用 PHP 重复

mysql - SQL 查询过滤器,如果

templates - 如何在 Go 模板中解析超出范围的变量?

json - go 中的 JSON panic

mysql - 使用多个表优化查询

sql - 是否存在不适用于 R 的 SQL 数据类型?

go - 关闭未知长度的 channel

go - 为什么我的 golang 程序创建了这么多线程?

go - 我如何使用标志来选择我想调用的函数

javascript - 循环 json 数组时出现问题