SQLite - Почему импорт с «УНИКАЛЬНЫМ ограничением не удался»? - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть CSV-файл test.csv с множеством уникальных записей типа (text,int,int), где текстовое поле не более 70 символов.

При выполнении следующих операторов скорость обычно составляет около 80 МБ / с:

sqlite3 db 'create table test(a text,b int,c int,primary key(a,b,c) without rowid'
pv test.csv | sqlite3 -init <(echo -e '.mode csv\n.import /dev/stdin test') db

Но при выполнении следующего оператора снова скорость обычно ниже 100 КБ / с и многоUNIQUE constraint failed печатаются в stderr:

pv test.csv | sqlite3 -init <(echo -e '.mode csv\n.import /dev/stdin test') db

Мне кажется, что в обоих случаях SQLite нужно проверять одно и то же ограничение, так что в случае, когда ничего не записывается на диск, многонамного медленнее, чем в случае, когда все записывается на диск?

И самый важный вопрос - как я могу ускорить вторичный импорт?Эту базу данных необходимо обновлять ежедневно, и записи в основном новые, но некоторые из них уже существуют в базе данных.Это замедляет процесс импорта.

Кстати, это то же самое, что SSD и HHD, хотя SSD немного быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...