Импорт данных Excel в SQL 2008 без промежуточных итогов и итогов с помощью Sql Server Studio

#sql #excel-2007

#sql #excel-2007

Вопрос:

Я хочу импортировать данные Excel 2007 без промежуточных итогов и итогов с помощью Sql Server Studio. Я пытался импортировать напрямую, но также содержит промежуточные итоги и итоги. Есть ли прямой способ сделать это?

Или есть альтернативный способ сделать этот импорт?

Редактировать 1 Добавлен формат Excel

Я не использую какой-либо запрос, просто используя sql wizard для импорта. Просто пытаюсь сделать это без каких-либо скриптов.

Формат 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. пожалуйста, предоставьте пример таблицы, которую вы импортируете, а также запрос, который вы используете для импорта. Я думаю, что единственным способом будет отфильтровать строки, которые являются итогами.

2. @TI Я обновил свой вопрос

Ответ №1:

Если вы используете OPENROWSET then, вы можете просто добавить предложение where в запрос

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

Если вам нужно настроить поставщиков и т. Д. Я рекомендую прочитать это, в котором также приведены примеры и альтернативные методы импорта данных из Excel.

Используя Задачи -> Импортировать данные; после настройки источника и назначения выберите «написать запрос …», затем используйте аналогичный запрос, как указано выше, например

 SELECT * FROM `sheet_name
 #sql #excel-2007

 #sql #excel-2007

Вопрос:

Я хочу импортировать данные Excel 2007 без промежуточных итогов и итогов с помощью Sql Server Studio. Я пытался импортировать напрямую, но также содержит промежуточные итоги и итоги. Есть ли прямой способ сделать это? Или есть альтернативный способ сделать этот импорт? Редактировать 1 Добавлен формат Excel Я не использую какой-либо запрос, просто используя sql wizard для импорта. Просто пытаюсь сделать это без каких-либо скриптов. Формат 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. пожалуйста, предоставьте пример таблицы, которую вы импортируете, а также запрос, который вы используете для импорта. Я думаю, что единственным способом будет отфильтровать строки, которые являются итогами.

2. @TI Я обновил свой вопрос

Ответ №1:

Если вы используете OPENROWSET then, вы можете просто добавить предложение where в запрос

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

Если вам нужно настроить поставщиков и т. Д. Я рекомендую прочитать это, в котором также приведены примеры и альтернативные методы импорта данных из Excel.

Используя Задачи -> Импортировать данные; после настройки источника и назначения выберите "написать запрос ...", затем используйте аналогичный запрос, как указано выше, например

WHERE `Name` NOT LIKE "%Total%" AND Name <> ""

По какой-то причине использование запроса приводит к путанице в ссылке сопоставления типов данных. Итак, основываясь на ссылке, которую я добавил

 <!-- 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 , казалось, «решило» проблему.

Комментарии:

1. Не уверен, что я все понимаю, попробую, когда у меня будет время, и обновлю здесь