2017-07-07 41 views
1

我想將100k +行導入SQL Server表。使用子查詢導入嚮導

我有我的插入這樣的(注意第六屆值是一個子查詢):

INSERT INTO BD_S3I.dbo.AGENDA 
(COD_UNDFBR, COD_DCPLNA, COD_TECNCA, COD_ATVIDE, DAT_PROGM_AGENDA, NUM_SQNCL_AGENDA, DAT_FINAL_AGENDA, COD_OCORR, COD_ROTA, NUM_SEMAN_PRGINS, NUM_DIAIN_PRGINS, DAT_INIC_PRGINS, MRC_SITUA_AGENDA, DAT_SUSPN_AGENDA, DAT_CONCL_AGENDA, DAT_REPRG_AGENDA, DCR_SITUA_AGENDA, DCR_AGENDA, MRC_AVISO_AGENDA, MRC_NEGLG_AGENDA, NUM_PERIO_PRGINS, DAT_DIAIN_PRGINS, DAT_JUSTN_AGENDA, COD_MTVNVS, MRC_ERP_AGENDA, COD_USUS3I_JUSTN) 

VALUES 

(1, 290, 2, 6, '2017-09-11 00:00:00.000', (SELECT CASE WHEN MAX(AGENDA.NUM_SQNCL_AGENDA) + 1 IS NULL THEN 1 ELSE MAX(AGENDA.NUM_SQNCL_AGENDA) + 1 END FROM AGENDA WHERE AGENDA.COD_UNDFBR = 1 AND AGENDA.COD_DCPLNA = 290 AND AGENDA.COD_TECNCA = 2 AND AGENDA.COD_ATVIDE = 6 AND AGENDA.DAT_PROGM_AGENDA = '2017-09-11 00:00:00.000'), '2017-09-17 00:00:00.000', NULL, 492, NULL, NULL, '2017-07-24 08:30:00.000', 'P', NULL, NULL, NULL, NULL, NULL, 'S', 'S', 7, '2017-07-24 00:00:00.000', NULL, NULL, 'N', NULL); 

我把人100K的下方插入對方,並開始導入。它工作正常,但執行所有100k +行花費太多時間。

我想使用導入嚮導(時間更好?)。

問題是,當我用我的數據選擇excel文件時,導入嚮導不明白該值上的子查詢。它稱它爲一個長文。

Image with subquery

enter image description here

+0

是的,你不能運行在你的價值觀列表中的子查詢。 –

回答

0

至少選擇一個返回類型是需要插入到第6列。 就像

(SELECT x = CASE ....) 

或者使用回,並在後面的子查詢一起輸入。

0

只需將您的INSERT...VALUESINSERT...SELECT其工作,因爲所有其他值是標量,並且可以與子查詢的SELECT聲明內嵌包括:

INSERT INTO BD_S3I.dbo.AGENDA (COD_UNDFBR, COD_DCPLNA, COD_TECNCA, COD_ATVIDE, 
           DAT_PROGM_AGENDA, NUM_SQNCL_AGENDA, DAT_FINAL_AGENDA, 
           COD_OCORR, COD_ROTA, NUM_SEMAN_PRGINS, NUM_DIAIN_PRGINS, 
           DAT_INIC_PRGINS, MRC_SITUA_AGENDA, DAT_SUSPN_AGENDA, 
           DAT_CONCL_AGENDA, DAT_REPRG_AGENDA, DCR_SITUA_AGENDA, 
           DCR_AGENDA, MRC_AVISO_AGENDA, MRC_NEGLG_AGENDA, 
           NUM_PERIO_PRGINS, DAT_DIAIN_PRGINS, DAT_JUSTN_AGENDA, 
           COD_MTVNVS, MRC_ERP_AGENDA, COD_USUS3I_JUSTN) 

SELECT 1, 290, 2, 6, '2017-09-11 00:00:00.000', 
     CASE WHEN MAX(AGENDA.NUM_SQNCL_AGENDA) + 1 IS NULL 
      THEN 1 
      ELSE MAX(AGENDA.NUM_SQNCL_AGENDA) + 1 
     END, 
     '2017-09-17 00:00:00.000', NULL, 492, NULL, 
     NULL, '2017-07-24 08:30:00.000', 'P', 
     NULL, NULL, NULL, NULL, NULL, 'S', 'S', 7, 
     '2017-07-24 00:00:00.000', NULL, NULL, 'N', NULL 

FROM AGENDA 
WHERE AGENDA.COD_UNDFBR = 1 AND AGENDA.COD_DCPLNA = 290 
    AND AGENDA.COD_TECNCA = 2 AND AGENDA.COD_ATVIDE = 6 
    AND AGENDA.DAT_PROGM_AGENDA = '2017-09-11 00:00:00.000')