SQL-使用联接将数据插入表中

时间:2019-02-07 15:38:19

标签: sql teradata

我已经创建了一个表,并希望使用联接将数据从另一个表插入该表中。我遇到的问题是表2很大,有亿万行,所以当我运行查询时,总是收到错误消息“ 2646 no more spool space”。

这是我尝试使用的查询示例,我已经在表中创建了空列。

$delivery['fields'][] = array('name' => 'subject', 'type' => 'html', 'content' => 'A cool subject');
$delivery['fields'][] = array('name' => 'first_name', 'type' => 'html', 'content' => '<strong>Panayiotis</strong>');
$deliveries[] = $delivery;

谢谢

2 个答案:

答案 0 :(得分:0)

尝试将其按ID分别进行1000万次和1000万次的冲洗


    INSERT INTO database1.table1(empty_column)     选择所需的列             来自database2.table2                  table1.column上的INNER JOIN database1.table1 = table2.column     其中table1.id <10000000     和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

答案 1 :(得分:0)

尝试一个临时表。 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;