【问题标题】:Import Excel data into SQL 2008 without subtotal and totals with Sql Server Studio使用 Sql Server Studio 将 Excel 数据导入 SQL 2008,无需小计和总计
【发布时间】:2014-06-22 07:52:23
【问题描述】:

我想使用 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 

【问题讨论】:

  • 请提供您正在导入的表的示例以及您用于导入的查询。我认为唯一的方法是过滤掉总计的行。
  • @TI 我更新了我的问题

标签: sql excel-2007


【解决方案1】:

如果您使用的是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 导入数据的示例和替代方法。

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

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,这似乎“解决”了问题。

【讨论】:

  • 不确定我是否理解这一切,等我有时间在这里更新时会尝试
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-13
  • 1970-01-01
  • 2018-01-14
相关资源
最近更新 更多