В библиотеке GORM, которая служит ORM (Object-Relational Mapping) для языка программирования Go, есть несколько способов выполнить bulk insert операцию. Рассмотрим каждый способ более подробно:
Способ 1: Создание среза объектов для вставки
-----------------------------------------------
Первый способ заключается в создании среза объектов и использовании метода Create
для массовой вставки. В этом случае каждый объект добавляется в срез и затем передается методу Create
.
type User struct { ID uint Name string Age uint } func bulkInsert(users []User) error { db := // инициализация GORM DB return db.Create(&users).Error }
В приведенном примере мы создаем структуру User
и передаем срез объектов users
методу Create
. GORM выполняет bulk insert, вставляя все объекты одним запросом.
Способ 2: Использование Raw SQL
------------------------------
Второй способ состоит в использовании сырого SQL-запроса для выполнения bulk insert операции.
func bulkInsert(users []User) error { db := // инициализация GORM DB var valueStrings []string var valueArgs []interface{} for _, user := range users { valueStrings = append(valueStrings, "(?, ?, ?)") valueArgs = append(valueArgs, user.Name, user.Age) } query := fmt.Sprintf("INSERT INTO users (name, age) VALUES %s", strings.Join(valueStrings, ",")) return db.Exec(query, valueArgs...).Error }
В этом случае мы создаем сырой SQL-запрос, вставляя значения в необходимом формате в запрос. Затем мы выполняем запрос с помощью метода Exec
.
Оба этих метода позволяют выполнить массовую вставку в базу данных с использованием GORM. Выбор способа зависит от ваших предпочтений и требований проекта. В первом способе мы используем ORM и работаем с объектами, тогда как во втором способе мы напрямую обращаемся к базе данных с помощью сырого SQL.