SQL - вставка данных в таблицу с помощью объединения - PullRequest
0 голосов
/ 07 февраля 2019

Я создал таблицу и хочу вставить данные в эту таблицу из другой таблицы, используя соединение.У меня проблема в том, что таблица 2 огромная, сотни миллионов строк, поэтому при выполнении запроса я всегда получаю сообщение об ошибке «2646 больше нет места в буфере».

Это примерзапрос, который я пытался использовать, я уже создал пустой столбец в моей таблице.

INSERT INTO database1.table1 (empty column)
SELECT desiredcolumn
FROM database2.table2
INNER JOIN database1.table1
on table1.column = table2.column

Спасибо

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Попробуйте временную таблицу.Teradata или SQL Server?

SQL Server

SELECT desiredcolumn 
into #temp
from database2.table2 
INNER JOIN database1.table1 
on table1.column = table2.column;

INSERT INTO database1.table1 (empty column) 
SELECT desiredcolumn 
from #temp;

Teradata

Create volatile Table TempTable as (
    SELECT desiredcolumn 
    from database2.table2 
    INNER JOIN database1.table1 
    on table1.column = table2.column
) with data
on commit preserve rows;

INSERT INTO database1.table1 (empty column) 
SELECT desiredcolumn 
from TempTable;
0 голосов
/ 07 февраля 2019

Попробуйте вручную ополаскивать его 10 миллионов на 10 миллионов, разбивая на идентификаторы


INSERT INTO database1.table1 (empty_column) ВЫБРАТЬ желаемый столбец из database2.table2 ВХОДИТЬ В БД.= table2.column где table1.id <10 000 000 и table1.id> 0

, затем запустите его несколько раз, пока вы не выполните все записи

РЕДАКТИРОВАТЬ ПОСЛЕ ОБУЧЕНИЯ ТАБЛИЦА 1 ЕСТЬПУСТО - отредактируйте снова:

update e_tbl 
set empty_column = desiredcolumn 
                    from   database2.table2 big_tbl
                    INNER JOIN database1.table1 e_tbl on e_tbl.column = 
                     big_tbl.column
                    where big_tbl.id <10 000 000
                     and big_tbl.id > 0
...