-- Привет всем. -- Есть csv, проблема в том что

он содержит очень много повторов по столбцам и по строкам.
-- Решил перекинуть это в базу данных, чтобы было проще. Но я не шарю в этом всем.
-- Проблема в том, что скорость вставки примерно 10 записей в секунду.
-- Как увеличить скорость вставки?

CREATE TABLE "HistoryData" (
"Id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
"barId" integer NOT NULL,
"blablaId" integer NOT NULL,
"fooId" integer NOT NULL,
-- и так еще десяток столбцов
CONSTRAINT "fk_HistoryData_bar_1" FOREIGN KEY ("barId") REFERENCES "bar" ("Id"),
CONSTRAINT "fk_HistoryData_blabla_1" FOREIGN KEY ("blablaId") REFERENCES "blabla" ("Id"),
CONSTRAINT "fk_HistoryData_foo _1" FOREIGN KEY ("fooId") REFERENCES "foo" ("Id")
);

CREATE TABLE "blabla" (
"Id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"blabla" TEXT
);
CREATE UNIQUE INDEX "blabla_AK"
ON "blabla" (
"blabla"
);
-- и все остальные аналогично.

--- вставляю через python sqlite3 executescript с такими параметрами.
--- connect.execute('PRAGMA foreign_keys = ON;')
--- connect.execute('PRAGMA journal_mode = WAL;')
--- connect.execute('PRAGMA synchronous = normal;')
--- connect.execute('PRAGMA encoding="UTF-8";')
--- connect.execute('PRAGMA temp_store = memory;')
--- connect.execute('PRAGMA mmap_size = 30000000000;')


INSERT INTO foo(Id, foo)
SELECT NULL, {foo}
WHERE NOT EXISTS(SELECT 1 FROM foo WHERE foo = {foo});

INSERT INTO bar(Id, bar)
SELECT NULL, {bar}
WHERE NOT EXISTS(SELECT 1 FROM bar WHERE bar = {bar});

INSERT INTO HistoryData
(
Id,
barId,
fooId
)
SELECT
NULL,
(SELECT Id FROM bar WHERE bar = {bar}),
(SELECT Id FROM foo WHERE foo = {foo})
WHERE NOT EXISTS(
SELECT 1
FROM HistoryData
WHERE
barId = (SELECT Id FROM bar WHERE bar = {bar}) AND
fooId = (SELECT Id FROM foo WHERE foo = {foo})
);

1 ответов

47 просмотров

Вставлять в бд прямо из csv вот так https://www.internet-technologies.ru/articles/import-csv-fayla-v-tablicu-mysql.html

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

Обсуждают сегодня

Hi! Could you please upvote my new notebook? thanks a lot. https://www.kaggle.com/code/melissamonfared/anime-character-generation-dsgan-gan
məru
4
upvote plz https://www.kaggle.com/code/bassetkerouche/swapping-face?scriptVersionId=207300096
benkerrouche Statoinary
1
Как считаете - вопрос на собесе: «Как быстрее всего запустить ec2 машину в aws (в чистом аккаунте) и показать вывод от любой команды с нее» не очень ли сложный для условного м...
Sergey
50
Господа, у меня вопрос. Что вообще такое этот ваш data science и data scientists? А то гуглю, а мне какую-то расплывчатую фигню говорят.
Inkosta
44
Hi could you please help me with my two new projects? https://www.kaggle.com/code/hesankazemnia/rice-image-classification-cnn-pytorch https://www.kaggle.com/code/hesankazemnia...
Hesan
6
Исходя из ваших комментариев, получается, что чтобы получить марты в CH из данных в PG, неправильно тянуть сырые данные в CH и там их обрабатывать, лепить справочники и джойни...
unhingedlunatic
42
hi, Can you upvote? https://www.kaggle.com/code/durjoychandrapaul/rag-q-a-system-by-langchain-huggingface-for-pdf?scriptVersionId=204704280
A
1
Could you upvote and comment please? https://www.kaggle.com/code/tatianapetrushkevich/beginner-images https://www.kaggle.com/code/tatianapetrushkevich/python-for-beginners1 ...
Tazziyana
7
Коллеги, приветствую! Появилась не совсем тривиальная задача реализовать в nginx редирект HTTPS —> HTTP. Да, именно так, а не наоборот. Мы разрабатываем embedded устройство,...
Никита
24
public async Task<string> YCFileGetLink(string fileName, int lifeTime) { DateTime utcNow = DateTime.UtcNow; var dataKey = GetKeyedHash(_configurat...
Сергей
5
Карта сайта