Как атомарно заменить правила nftables?

Важный отказ от ответственности : Я проверил это на данных, представленных в вопросе. Загрузка нескольких гигабайт данных в базу данных SQLite может занять много времени. Запросы с использованием двух текстовых полей могут быть неэффективными. Может влиять производительность диска. И т. Д. И т. Д.

Следующий сценарий sh создаст базу данных SQLlite database.db (этот файл будет удален, если он уже существует), создать таблицы qadr и данные , и загрузить данные в две таблицы ( файл1 в данные и файл2 в кадр ). Затем он создаст индекс для data.adr .

#!/bin/sh

address_file="file2"
data_file="file1"

database="database.db"

rm -f "$database"

sqlite3 "$database" <<END_SQL
CREATE TABLE qadr ( adr TEXT );
CREATE TABLE data ( name TEXT, adr TEXT, tag1 TEXT, tag2 TEXT );
.separator :
.import "$data_file" data
.import "$address_file" qadr
VACUUM;
CREATE UNIQUE INDEX adri ON data(adr);
VACUUM;
END_SQL

Создание индекса предполагает, что адреса в file1 уникальны (то есть, что второе поле : -delimited является уникальным). Если это не так, удалите UNIQUE из оператора CREATE INDEX (в идеале они уникальны, а в идеале - строки в file2 также уникальны).

Я никогда не работал с SQLite и такими объемами данных, но знаю, что многогигабайтный импорт в MongoDB и MySQL может быть очень медленным, а создание индекса также может занять много времени. По сути, я говорю, что просто бросаю это кому-то, у кого есть много данных для тестирования.

Тогда это вопрос одного простого запроса:

$ sqlite3 database.db 'SELECT data.* FROM data JOIN qadr ON (data.adr = qadr.adr)'
John|myemail@gmail.com|johnson123|22hey

или, возможно, даже просто

$ sqlite3 database.db 'SELECT * FROM data NATURAL JOIN qadr'
John|myemail@gmail.com|johnson123|22hey

Кто-то с большим знанием SQLite наверняка даст конструктивный комментарий по этому поводу.

1
18.07.2020, 14:03
0 ответов

Теги

Похожие вопросы