Множественная вставка строк в SQLite: правильный синтаксис
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Добавить несколько записей в SQLite можно с помощью следующего скрипта:
INSERT INTO имя_таблицы (колонка1, колонка2) VALUES
('значение1_строка1', 'значение2_строка1'),
('значение1_строка2', 'значение2_строка2');
Подставьте вместо имя_таблицы
, колонка1
, колонка2
и значение
соответствующие значения.
Если требуется добавить большое количество данных, повысьте производительность, запаковав добавление данных в транзакцию:
BEGIN TRANSACTION;
/* Начинаем */
INSERT INTO имя_таблицы (колонка1, колонка2) VALUES ('значение1_строка1', 'значение2_строка1');
/* Добавляем еще одну запись */
INSERT INTO имя_таблицы (колонка1, колонка2) VALUES ('значение1_строка2', 'значение2_строка2');
...
COMMIT; /* Заканчиваем операции */
Пакетная загрузка данных значительно ускорит работу SQLite!
Берегите свои нервы: Устаревшие версии SQLite
Если вы используете устаревшую версию SQLite до версии 3.7.11, не волнуйтесь! Для массового добавления применяйте команду UNION ALL SELECT
:
INSERT INTO имя_таблицы (колонка1, колонка2)
SELECT 'значение1a', 'значение2a'
UNION ALL SELECT 'значение1b', 'значение2b'
UNION ALL SELECT 'значение1c', 'значение2c';
Запомните, в последовательности UNION
псевдонимы используются только для первого оператора SELECT
!
Оптимизация: быстро и эффективно
Транзакции: всегда быстрее
Оформляйте операции добавления данных в одну транзакцию, чтобы уменьшить количества I/O операций с диском и ускорить работу SQLite.
Не забывайте завершать транзакцию с помощью команды COMMIT — покидают только после завершения работы!
Write-Ahead Logging (WAL): два действия одновременно
Если нужно одновременно читать и писать данные, режим Write-Ahead Logging (WAL) в SQLite будет самым подходящим. Перед его использованием изучите соответствующий раздел документации SQLite.
Визуализация
Восприимчиво отнеситесь к SQLite как к садовому участку, где каждый INSERT
становится высаживанием саженца:
Участок (📋): [грядка 1 (🌱), грядка 2 (🌱🌱), грядка 3 (🌱🌱🌱)]
Этот участок через некоторое время превратится в:
INSERT INTO участок (грядка) VALUES
(🌱), /* И вот уже первый саженец! */
(🌱🌱), /* Два идентичных растения! */
(🌱🌱🌱); /* И даже три на одной грядке! */
И теперь настало время для сбора урожая:
📋: [🌿, 🌿🌿, 🌿🌿🌿]
# Вот это результат!
Массовые операции: сила трудовой дисциплины
Множественное добавление строк: вместе нам не страшны трудности!
Помните о необходимости совместной работы при массовом взаимодействии с данными: отдельные действия всегда менее эффективны, чем групповые.
# Автогенерируем запросы: пусть сила трудовой дисциплины будет с нами!
строки.map do |строка|
"INSERT INTO имя_таблицы VALUES #{строка.join(",")};"
end.join
Обработка ошибок: нежность и забота о данных
При работе с большим количеством данных очень важно обрабатывать исключения, исправлять ошибки и контролировать целостность данных.
Распространенные ошибки: путь к истинному знанию SQL
Несоответствие типов данных: яблоки отличаются от апельсинов
Всё в SQL замечательно до тех пор, пока вы не решили смешать типы данных! Будьте аккуратными, чтобы не нарушить целостность данных.
Уникальные ключи и дубликаты: это что-то новое
Добавьте в свои запросы INSERT OR IGNORE
, чтобы избежать проблем с дублированием данных.
Продвинутые приемы: для тех, кто стремится к совершенству
PRAGMAs для оптимизации добавления данных: тонкая настройка — секрет успеха
PRAGMAs позволяют вам контролировать качество работы SQLite. Например, PRAGMA cache_size;
дает возможность управлять размером кеша вашей сессии.
EXPLAIN QUERY PLAN: глубокий взгляд внутрь
Используйте EXPLAIN QUERY PLAN
для лучшего разумения SQLite перед выполнением запроса.
Полезные материалы
- How to insert multiple rows in SQLite? – Stack Overflow — Обсуждение на Stack Overflow.
- INSERT – SQLite Official Documentation — Официальная документация SQLite.
- Save data in a local database using Room | Android Developers — Советы от разработчиков Android.
- SQLite Frequently Asked Questions — Часто задаваемые вопросы по SQLite.
- Write-Ahead Logging — Описание режима WAL в SQLite.
- Transaction – SQLite Official Documentation — Что такое транзакция в SQLite?
- SQLite – INSERT Query — Введение в запросы INSERT в SQLite.