У меня есть одна база данных, которая не нормализована:
schollinabd.movies:
CREATE TABLE dbo.movies
(
movieid VARCHAR (20) NULL,
title VARCHAR (400) NULL,
mvyear VARCHAR (100) NULL,
actorid VARCHAR (20) NULL,
actorname VARCHAR (250) NULL,
sex CHAR (1) NULL,
as_character VARCHAR (1500) NULL,
languages VARCHAR (1500) NULL,
genres VARCHAR (100) NULL
)
И у меня есть моя база данных: labbd11, где я собираюсь нормализовать эти данные из дисциплинарного шкафа.Поэтому я пытаюсь выполнить этот запрос:
INTO labbd11..movie_actor(idMovie, idActor, idCharacter)
SELECT CASE
WHEN IsNumeric(movies.movieid+ '.0e0') <> 1 THEN NULL
ELSE CAST (movies.movieid AS INT)
END,
CASE WHEN IsNumeric(movies.actorid+ '.0e0') <> 1 THEN NULL
ELSE CAST (movies.actorid AS INT)
END,
(SELECT id FROM actor_character WHERE character = movies.as_character)
FROM disciplinabd..movies
Он выполняется нормально, но это огромное количество данных, где я должен это сделать, например, 14 миллионов строк в schollinabd.movies.
Мои вопросы:
- Есть ли способ улучшить мою вставку?
- Могу ли я вставить что-то вроде
insert (1, 1000) ...
после завершения, я просто изменяю значения, такие как insert( 1001, 2000) ..
и продолжай.Что я имею в виду, есть ли какая-нибудь возможность вставить мою базу данных понемногу?Таким образом, я могу избежать операции отката, если соединение разорвано.Вчера этот запрос вставки выполнялся в течение 16 часов, затем соединение разорвалось, и я потерял всю работу.
ОБНОВЛЕНИЕ
CREATE TABLE movie(
id INT PRIMARY KEY,
title VARCHAR(400) NOT NULL,
year INT
)
CREATE TABLE actor (
id INT PRIMARY KEY,
name VARCHAR(250) NOT NULL,
sex CHAR(1) NOT NULL
)
CREATE TABLE actor_character(
id INT PRIMARY KEY IDENTITY,
character VARCHAR(1000)
)
CREATE TABLE movie_actor(
idMovie INT,
idActor INT,
idCharacter INT,
CONSTRAINT fk_movie_actor_1 FOREIGN KEY (idMovie) REFERENCES movie(id) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_movie_actor_2 FOREIGN KEY (idActor) REFERENCES actor(id) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_movie_actor_3 FOREIGN KEY (idCharacter) REFERENCES actor_character(id) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT pk_movie_actor PRIMARY KEY (idMovie,idActor, idCharacter)
)