Size: a a a

2020 March 14

YV

Yushkevich Vitaly in Laravel Pro
DB::table(‘my_table’)->insert($preparedChunkedArray) и будет тебе счастье
источник

АВ

Алексей Веснин... in Laravel Pro
Yushkevich Vitaly
DB::table(‘my_table’)->insert($preparedChunkedArray) и будет тебе счастье
спасибо
источник

YV

Yushkevich Vitaly in Laravel Pro
При этом следи, чтобы нужная магия не потерялась (например created_at / uptadet_at, их руками надо ставить в этот самый массив)
источник

АВ

Алексей Веснин... in Laravel Pro
Yushkevich Vitaly
При этом следи, чтобы нужная магия не потерялась (например created_at / uptadet_at, их руками надо ставить в этот самый массив)
При Batch вставке есть возможность проверять на существование записей в БД? или это тормоза жуткие будут
источник

YV

Yushkevich Vitaly in Laravel Pro
Алексей Веснин
При Batch вставке есть возможность проверять на существование записей в БД? или это тормоза жуткие будут
Во-первых нет.  Но можно так


https://dev.mysql.com/doc/refman/8.0/en/replace.html
источник

YV

Yushkevich Vitaly in Laravel Pro
Там же есть параметр ignore
источник

АВ

Алексей Веснин... in Laravel Pro
Yushkevich Vitaly
Во-первых нет.  Но можно так


https://dev.mysql.com/doc/refman/8.0/en/replace.html
да, наверное то, что нужно
источник

EG

Egor Gruzdev in Laravel Pro
Yushkevich Vitaly
Там же есть параметр ignore
ignore autoincrement уничтожает, т.е. инкрементит за зря, лучше все таки select update, не нашел вставил.
Правильно раставленые индексы помогут ускорить проверку на существование записи.
источник

PF

Petr Filippov in Laravel Pro
Yushkevich Vitaly
Во-первых нет.  Но можно так


https://dev.mysql.com/doc/refman/8.0/en/replace.html
А при этом айдишник записи остаётся или при создании записи он инкрементится?
источник

EG

Egor Gruzdev in Laravel Pro
Petr Filippov
А при этом айдишник записи остаётся или при создании записи он инкрементится?
Id останется, но значение autoincrement не откатится
источник

YV

Yushkevich Vitaly in Laravel Pro
"REPLACE works exactly like INSERT, except that if an old row in the table has the same value as a new row for a PRIMARY KEY or a UNIQUE index, the old row is deleted before the new row is inserted. "
источник

PF

Petr Filippov in Laravel Pro
Получается, если у меня в таблице дофига проинициализированных полей, не null, мне их стейт нужно заново проставить вручную
источник

EG

Egor Gruzdev in Laravel Pro
Yushkevich Vitaly
"REPLACE works exactly like INSERT, except that if an old row in the table has the same value as a new row for a PRIMARY KEY or a UNIQUE index, the old row is deleted before the new row is inserted. "
источник

PF

Petr Filippov in Laravel Pro
Имеется в виду в новых записях у меня по дефаулту будут null, а в старых записях, где эти поля не null
источник

PF

Petr Filippov in Laravel Pro
Сложно) лучше инзертить новые записи и не париться🙈
источник

YV

Yushkevich Vitaly in Laravel Pro
Petr Filippov
Имеется в виду в новых записях у меня по дефаулту будут null, а в старых записях, где эти поля не null
если у тебя PK, то не будет старых / новых записей. Если не PK, то это не будет работать.
источник

YV

Yushkevich Vitaly in Laravel Pro
если хочется делать быстрые вставки, и при этом проверять дубликаты, то в любом случае будет определенные геморой.
источник

PF

Petr Filippov in Laravel Pro
Yushkevich Vitaly
если хочется делать быстрые вставки, и при этом проверять дубликаты, то в любом случае будет определенные геморой.
согласен)
источник

YV

Yushkevich Vitaly in Laravel Pro
Если будет существенный поток, то быстрее всего будет работать через импорт из csv во временную таблицу и оттуда перегонкой через insert into on duplicate key update
источник

YV

Yushkevich Vitaly in Laravel Pro
когда целиком всю таблицу загонишь за раз
источник