使用Sql Server Studio将Excel数据导入SQL 2008而不使用小计和总计

时间:2014-06-22 07:52:23

标签: sql excel-2007

我想使用Sql Server Studio导入excel 2007数据而不使用子总计和总计。我尝试直接导入,但也附带了小计和总计。这样做有直接的方法吗?

或者有替代方法进行此导入吗?

编辑1添加了Excel格式

我没有使用任何查询只使用sql向导导入。只是尝试在没有任何脚本的情况下完成它。

Excel格式

ProgramID | Name   |  Amount
20        | Adrian |     20
20        | Jack   |     35
           Sub Total     55  <== This I do not want to import
21        | Janet  |     25
21        | Jill   |     20
           Sub Total     45  <== This I do not want to import

           Total        100  <== This I do not want to import 

1 个答案:

答案 0 :(得分:0)

如果您使用的是OPENROWSET,那么您只需在查询中添加where子句

即可
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
    'Excel 12.0 Xml;HDR=YES;Database=path\to\the.xlsx',
    'SELECT * FROM [sheet_name$] WHERE NAME NOT LIKE ''%Total%'' AND NAME <> ''''')

如果您需要设置提供程序等,我建议您阅读this,其中还提供了从Excel导入数据的示例和替代方法。

使用任务 - &gt;导入数据;设置源和目标后,选择“编写查询...”然后使用与上面类似的查询,例如

SELECT * FROM `sheet_name$` WHERE `Name` NOT LIKE "%Total%" AND Name <> ""

由于某些原因,使用查询会混淆数据类型映射link。所以基于我添加的链接

<!-- VarChar Query Kludge -->
<dtm:DataTypeMapping >
    <dtm:SourceDataType>
        <dtm:DataTypeName>200</dtm:DataTypeName>
    </dtm:SourceDataType>
    <dtm:DestinationDataType>
        <dtm:CharacterStringType>
            <dtm:DataTypeName>DT_STR</dtm:DataTypeName>
            <dtm:UseSourceLength/>
        </dtm:CharacterStringType>
    </dtm:DestinationDataType>
</dtm:DataTypeMapping>

<!-- NVarChar Query Kludge -->
<dtm:DataTypeMapping >
    <dtm:SourceDataType>
        <dtm:DataTypeName>202</dtm:DataTypeName>
    </dtm:SourceDataType>
    <dtm:DestinationDataType>
        <dtm:CharacterStringType>
            <dtm:DataTypeName>DT_WSTR</dtm:DataTypeName>
            <dtm:UseSourceLength/>
        </dtm:CharacterStringType>
    </dtm:DestinationDataType>
</dtm:DataTypeMapping>

AceToSSIS.xml似乎“解决”了这个问题。