Sql 带子查询的导入向导

Sql 带子查询的导入向导,sql,excel,import,Sql,Excel,Import,我想将100k+行导入到SQL Server表中 我的insert是这样的(注意子查询的第6个值): 我将所有100k插入项放在彼此下方,然后开始导入。它工作得很好,但是thakes花了太多时间来执行所有的100k+行 我正在考虑使用导入向导(时间更好吗?) 问题是,当我选择包含数据的excel文件时,导入向导无法理解该值的子查询。它称之为长文 至少选择一种需要插入第6列的返回类型。 就像 ( SELECT x = CASE .... ) 或者在末尾使用返回类型和子查询。至少选择一个需要插入

我想将100k+行导入到SQL Server表中

我的insert是这样的(注意子查询的第6个值):

我将所有100k插入项放在彼此下方,然后开始导入。它工作得很好,但是thakes花了太多时间来执行所有的100k+行

我正在考虑使用导入向导(时间更好吗?)

问题是,当我选择包含数据的excel文件时,导入向导无法理解该值的子查询。它称之为长文


至少选择一种需要插入第6列的返回类型。 就像

( SELECT x = CASE .... )

或者在末尾使用返回类型和子查询。

至少选择一个需要插入第6列的返回类型。 就像

( SELECT x = CASE .... )

或者将返回类型与子查询一起使用。

只需将您的
插入…值
转换为
插入…选择
,因为所有其他值都是标量,可以与子查询的
选择
语句内联使用:

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')

只需将
INSERT…VALUES
转换为
INSERT…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')

是,不能在值列表中运行子查询。是,不能在值列表中运行子查询。