Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Кол-во строк в импортируемом файле  [new]
Testor1
Member

Откуда:
Сообщений: 679
Всем привет!

Есть задачка

В имени файла есть инфо о кол-во строк в файле.
Данные импортируются с помощью OPENROWSET + BULK
В WHERE указано условие col1 is not null.

Сколько строк было вставлено в конечную таблицу можно узнать по @@ROWCOUNT

А возможно ли как-то узнать, сколько строк было загружено до срабатывания условия WHERE ?
Нужна эта инфа, чтобы сравнить ее с кол-во строк в имени файла, чтобы проверить целостность файла.

Импортировать все сначала в промежуточную таблицу не реально, поскольку файлы очень большие > 20 ГБ.
25 окт 12, 20:18    [13376608]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37050
Разве что из актуального плана выполнения.
25 окт 12, 21:43    [13376868]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
Testor1
Member

Откуда:
Сообщений: 679
Гавриленко Сергей Алексеевич
Разве что из актуального плана выполнения.


Есть один кривой вариант

использовать триггер instead of на insert
в этом случае при insert он показывает кол-во загруженных строк, а не вставленных

но на сколько процентов увеличивает время триггер?

провести тесты пока не получается :(
25 окт 12, 22:14    [13376958]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Testor1
Гавриленко Сергей Алексеевич
Разве что из актуального плана выполнения.


Есть один кривой вариант

использовать триггер instead of на insert
в этом случае при insert он показывает кол-во загруженных строк, а не вставленных

но на сколько процентов увеличивает время триггер?

провести тесты пока не получается :(
А условие WHERE применять уже в триггере?
Ну тогда вы все равно упираетесь в "Импортировать все сначала в промежуточную таблицу не реально, поскольку файлы очень большие > 20 ГБ.", где по вашему будут хранится промежуточные результаты таблицы inserted?

Вам нужно просто проверить физическую целостность файла? может тогда лучше crc32 считать?
25 окт 12, 22:29    [13377003]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
Testor1
Member

Откуда:
Сообщений: 679
Mind
Testor1
пропущено...


Есть один кривой вариант

использовать триггер instead of на insert
в этом случае при insert он показывает кол-во загруженных строк, а не вставленных

но на сколько процентов увеличивает время триггер?

провести тесты пока не получается :(
А условие WHERE применять уже в триггере?
Ну тогда вы все равно упираетесь в "Импортировать все сначала в промежуточную таблицу не реально, поскольку файлы очень большие > 20 ГБ.", где по вашему будут хранится промежуточные результаты таблицы inserted?

Вам нужно просто проверить физическую целостность файла? может тогда лучше crc32 считать?



Согласен. Самообман. Возможно только работа с триггером будет быстрее, чем с временной таблицей.

нужно проверить, что кол-во строк в файле и кол-во загружаемых в SQL соотвествует кол-во строк указанных в имени файла.

файл получаю с источника без crc32
25 окт 12, 22:44    [13377058]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Testor1
Mind
пропущено...
А условие WHERE применять уже в триггере?
Ну тогда вы все равно упираетесь в "Импортировать все сначала в промежуточную таблицу не реально, поскольку файлы очень большие > 20 ГБ.", где по вашему будут хранится промежуточные результаты таблицы inserted?

Вам нужно просто проверить физическую целостность файла? может тогда лучше crc32 считать?



Согласен. Самообман. Возможно только работа с триггером будет быстрее, чем с временной таблицей.
Там та же временная таблица.

Testor1
нужно проверить, что кол-во строк в файле и кол-во загружаемых в SQL соотвествует кол-во строк указанных в имени файла.

файл получаю с источника без crc32
Можно сделать SSIS пакетом. На вычитке считать строки, а перед вставкой отсекать ненужные.
26 окт 12, 00:54    [13377494]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
Alexander Titkin
Member

Откуда: Москва
Сообщений: 91
А если второй OPENROWSET с select count(*) - файл также будет материализован?
26 окт 12, 00:55    [13377497]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Alexander Titkin
А если второй OPENROWSET с select count(*) - файл также будет материализован?
Нет, но тогда придется 2 раза читать 20 гигабайтный файл. Хотя я думаю что это наверняка лучше чем вариант со временной таблицей.
26 окт 12, 01:30    [13377609]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8724
Посчитайте любой говноподелкой сколько строк (например CR + LF , оно же 0x0d0a)... Хотя тоже вопрос тот еще - что там разделитель строк и сколько их и нет ли в них "огрызков". Но это самый быстрый путь... Хотя, тоже не факт.
ИМБО
26 окт 12, 02:10    [13377661]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
Testor1
Member

Откуда:
Сообщений: 679
Mind
Alexander Titkin
А если второй OPENROWSET с select count(*) - файл также будет материализован?
Нет, но тогда придется 2 раза читать 20 гигабайтный файл. Хотя я думаю что это наверняка лучше чем вариант со временной таблицей.


Получается INSTEAD OF - как один из двух вариантов.

Вопрос таблицы INSERTED и DELETED создаются в tempdb ?
26 окт 12, 19:29    [13382263]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Testor1
Mind
пропущено...
Нет, но тогда придется 2 раза читать 20 гигабайтный файл. Хотя я думаю что это наверняка лучше чем вариант со временной таблицей.


Получается INSTEAD OF - как один из двух вариантов.

Вопрос таблицы INSERTED и DELETED создаются в tempdb ?
А где ж еще им создаваться.
26 окт 12, 21:25    [13382625]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
Crimean
Member

Откуда:
Сообщений: 13148
на 100% не уверен, но очень сдается мне что игры с триггером будут сильно "мимо кассы"
а структура данных не позволяет посчитать число строк как размер файла / размер строки - заголовок?
имхо целостность файла стоит проверить на этапе перемещения в каталог загрузки..
26 окт 12, 21:34    [13382657]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
Testor1
Member

Откуда:
Сообщений: 679
Mind
Testor1
пропущено...


Получается INSTEAD OF - как один из двух вариантов.

Вопрос таблицы INSERTED и DELETED создаются в tempdb ?
А где ж еще им создаваться.



Если Openrowset добавить в with () будет ли создаваться временная таблица для WITH?


автор
Задается временно именованный результирующий набор, называемый обобщенным табличным выражением (ОТВ). Он извлекается при выполнении простого запроса и определяется в области выполнения одиночной инструкции SELECT, INSERT, UPDATE или DELETE. Это предложение может использоваться также в инструкции CREATE VIEW как часть определяющей ее инструкции SELECT. Обобщенное табличное выражение может включать ссылки на само себя. Такое выражение называется рекурсивным обобщенным табличным выражением.
27 окт 12, 15:03    [13384803]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
Alexander Titkin
Member

Откуда: Москва
Сообщений: 91
Testor1,

А уж покажите кодом что вы имеете в виду, а то у меня вариантов 10 что вы имели в виду и все не в пользу понимания sql
27 окт 12, 15:46    [13384861]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
Testor1
Member

Откуда:
Сообщений: 679
Alexander Titkin
Testor1,

А уж покажите кодом что вы имеете в виду, а то у меня вариантов 10 что вы имели в виду и все не в пользу понимания sql


query WITH(col1, col2) AS 
(
	SELECT col1, col2
	FROM openrowset(BULK, ....) 
	
)
SELECT col1, col2 
FROM query
WHERE col2 IS NOT NULL 
27 окт 12, 15:56    [13384876]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
Alexander Titkin
Member

Откуда: Москва
Сообщений: 91
Testor1,

Тоже самое что написать

SELECT col1, col2 
FROM (
		SELECT col1, col2
		FROM openrowset(BULK, ....)
	) query
WHERE col2 IS NOT NULL 
27 окт 12, 16:15    [13384926]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
Testor1
Member

Откуда:
Сообщений: 679
Alexander Titkin
Testor1,

Тоже самое что написать

SELECT col1, col2 
FROM (
		SELECT col1, col2
		FROM openrowset(BULK, ....)
	) query
WHERE col2 IS NOT NULL 


Для подзапроса создается временная таблица с полным набором данных (выборки) ?
27 окт 12, 16:17    [13384930]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
Alexander Titkin
Member

Откуда: Москва
Сообщений: 91
Testor1,

Я отказываюсь быть оптимизатором скуля) Пускай он думает, у него внутрях "думатель" специально заточенный)
Посмотрите план, там все написано будет. Да и нет тут никакого подзапроса, все вырождается в обычный select с условием.
И откуда взялось про временную таблицу? Вы ее не создаете - значит ее не будет. А ваш изначальный openrowset + bulk хранится ли исходный файл в памяти\tempdb ? На месте сервера я бы вычитывал необходимый блок для балка , вставлял в таблу и далее по циклу до конца файла. А для подсчета количества строк делал бы примерно тоже самое. Т.е. не держал бы в памяти\tempdb файл целиком.
Поэтому пройтись два раза по файлу я не вижу проблем.
27 окт 12, 17:47    [13385136]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
Testor1
Member

Откуда:
Сообщений: 679
Будет ли такой запрос использовать временную таблицу ?

DECLARE @i INT = 1;

WITH query(col1, col2, rownumber) AS 
(
	select col1, col2, ROW_NUMBER() OVER (ORDER BY @i DESC) AS Rank  
	from table1
),
query1 (max_rownumber) AS 
(
	SELECT MAX(rownumber)
	FROM query 
)

SELECT *, (SELECT TOP 1 max_rownumber FROM query1) 
FROM query 
WHERE col1%2 = 0
16 ноя 12, 10:05    [13481975]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
Glory
Member

Откуда:
Сообщений: 104760
Testor1
Будет ли такой запрос использовать временную таблицу ?

А что для вас означает "временная таблица" ?
16 ноя 12, 10:17    [13482042]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
Testor1
Member

Откуда:
Сообщений: 679
Glory
Testor1
Будет ли такой запрос использовать временную таблицу ?

А что для вас означает "временная таблица" ?


промежуточный результат выборки в tempdb для query1 и/или query2

вместо table1 я хочу использовать openrowset для загрузки данных из файла.
16 ноя 12, 10:20    [13482060]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
Glory
Member

Откуда:
Сообщений: 104760
Testor1
промежуточный результат выборки в tempdb для query1 и/или query2

вместо table1 я хочу использовать openrowset для загрузки данных из файла.

Вы так и не научились анализировать план выполнения ?
16 ноя 12, 10:21    [13482065]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
Testor1
Member

Откуда:
Сообщений: 679
Glory
Testor1
промежуточный результат выборки в tempdb для query1 и/или query2

вместо table1 я хочу использовать openrowset для загрузки данных из файла.

Вы так и не научились анализировать план выполнения ?


Курсы не проходил. Не все понятно.
Вот пример плана запроса по таблице, а не из openquery
Данных в таблице порядка 33 ГБ

<?xml version="1.0" encoding="utf-16"?>
<ShowPlanXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="1.1" Build="10.50.1600.1" xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan">
  <BatchSequence>
    <Batch>
      <Statements>
        <StmtSimple StatementCompId="1" StatementId="1" StatementText="DECLARE @i INT = 1;&#xD;&#xA;&#xD;" StatementType="ASSIGN" />
      </Statements>
      <Statements>
        <StmtSimple StatementCompId="2" StatementEstRows="10" StatementId="2" StatementOptmLevel="FULL" StatementSubTreeCost="3501.37" StatementText="&#xA;WITH query(COL3, COL9, COL4, COL8, FileId, HashCode, ID, COL7, COL6, COL2, COL1, COL5, rownumber) AS &#xD;&#xA;(&#xD;&#xA;	select a.COL3, a.COL9, a.COL4, a.COL8, a.FileId, a.HashCode, a.ID, a.COL7, a.COL6, a.COL2, a.COL1, a.COL5, ROW_NUMBER() OVER (ORDER BY @i DESC) AS Rank  &#xD;&#xA;	from TEST_DB..test_table a&#xD;&#xA;),&#xD;&#xA;query1 (max_rownumber) AS &#xD;&#xA;(&#xD;&#xA;	SELECT MAX(rownumber)&#xD;&#xA;	FROM query &#xD;&#xA;)&#xD;&#xA;&#xD;&#xA;SELECT TOP 10 *, (SELECT TOP 1 max_rownumber FROM query1) &#xD;&#xA;FROM query &#xD;&#xA;WHERE id%2 = 0" StatementType="SELECT" QueryHash="0xE9C54C624F67065B" QueryPlanHash="0xFB65596781C51971">
          <StatementSetOptions ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" NUMERIC_ROUNDABORT="false" QUOTED_IDENTIFIER="true" />
          <QueryPlan CachedPlanSize="40" CompileTime="20812" CompileCPU="16456" CompileMemory="608">
            <RelOp AvgRowSize="2134" EstimateCPU="1E-06" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="10" LogicalOp="Compute Scalar" NodeId="0" Parallel="false" PhysicalOp="Compute Scalar" EstimatedTotalSubtreeCost="3501.37">
              <OutputList>
                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="ID" />
                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="FileId" />
                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL1" />
                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL2" />
                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL3" />
                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL4" />
                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL5" />
                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL6" />
                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL7" />
                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL8" />
                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL9" />
                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="HashCode" />
                <ColumnReference Column="Expr1004" />
                <ColumnReference Column="Expr1012" />
              </OutputList>
              <ComputeScalar>
                <DefinedValues>
                  <DefinedValue>
                    <ColumnReference Column="Expr1012" />
                    <ScalarOperator ScalarString="[Expr1010]">
                      <Identifier>
                        <ColumnReference Column="Expr1010" />
                      </Identifier>
                    </ScalarOperator>
                  </DefinedValue>
                </DefinedValues>
                <RelOp AvgRowSize="2134" EstimateCPU="1E-06" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="10" LogicalOp="Top" NodeId="1" Parallel="false" PhysicalOp="Top" EstimatedTotalSubtreeCost="3501.37">
                  <OutputList>
                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="ID" />
                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="FileId" />
                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL1" />
                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL2" />
                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL3" />
                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL4" />
                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL5" />
                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL6" />
                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL7" />
                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL8" />
                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL9" />
                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="HashCode" />
                    <ColumnReference Column="Expr1004" />
                    <ColumnReference Column="Expr1010" />
                  </OutputList>
                  <Top RowCount="false" IsPercent="false" WithTies="false">
                    <TopExpression>
                      <ScalarOperator ScalarString="(10)">
                        <Const ConstValue="(10)" />
                      </ScalarOperator>
                    </TopExpression>
                    <RelOp AvgRowSize="2134" EstimateCPU="7.75057" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="10" LogicalOp="Inner Join" NodeId="2" Parallel="false" PhysicalOp="Nested Loops" EstimatedTotalSubtreeCost="3501.37">
                      <OutputList>
                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="ID" />
                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="FileId" />
                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL1" />
                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL2" />
                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL3" />
                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL4" />
                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL5" />
                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL6" />
                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL7" />
                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL8" />
                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL9" />
                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="HashCode" />
                        <ColumnReference Column="Expr1004" />
                        <ColumnReference Column="Expr1010" />
                      </OutputList>
                      <NestedLoops Optimized="false">
                        <RelOp AvgRowSize="15" EstimateCPU="1E-07" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="1" LogicalOp="Top" NodeId="3" Parallel="false" PhysicalOp="Top" EstimatedTotalSubtreeCost="3501.01">
                          <OutputList>
                            <ColumnReference Column="Expr1010" />
                          </OutputList>
                          <Top RowCount="false" IsPercent="false" WithTies="false">
                            <TopExpression>
                              <ScalarOperator ScalarString="(1)">
                                <Const ConstValue="(1)" />
                              </ScalarOperator>
                            </TopExpression>
                            <RelOp AvgRowSize="15" EstimateCPU="136.677" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="1" LogicalOp="Aggregate" NodeId="4" Parallel="false" PhysicalOp="Stream Aggregate" EstimatedTotalSubtreeCost="3501.01">
                              <OutputList>
                                <ColumnReference Column="Expr1010" />
                              </OutputList>
                              <StreamAggregate>
                                <DefinedValues>
                                  <DefinedValue>
                                    <ColumnReference Column="Expr1010" />
                                    <ScalarOperator ScalarString="MAX([Expr1009])">
                                      <Aggregate AggType="MAX" Distinct="false">
                                        <ScalarOperator>
                                          <Identifier>
                                            <ColumnReference Column="Expr1009" />
                                          </Identifier>
                                        </ScalarOperator>
                                      </Aggregate>
                                    </ScalarOperator>
                                  </DefinedValue>
                                </DefinedValues>
                                <RelOp AvgRowSize="15" EstimateCPU="18.2236" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="227795000" LogicalOp="Compute Scalar" NodeId="5" Parallel="false" PhysicalOp="Sequence Project" EstimatedTotalSubtreeCost="3364.34">
                                  <OutputList>
                                    <ColumnReference Column="Expr1009" />
                                  </OutputList>
                                  <SequenceProject>
                                    <DefinedValues>
                                      <DefinedValue>
                                        <ColumnReference Column="Expr1009" />
                                        <ScalarOperator ScalarString="row_number">
                                          <Sequence FunctionName="row_number" />
                                        </ScalarOperator>
                                      </DefinedValue>
                                    </DefinedValues>
                                    <RelOp AvgRowSize="15" EstimateCPU="4.55589" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="227795000" LogicalOp="Segment" NodeId="6" Parallel="false" PhysicalOp="Segment" EstimatedTotalSubtreeCost="3346.11">
                                      <OutputList>
                                        <ColumnReference Column="Segment1015" />
                                      </OutputList>
                                      <Segment>
                                        <GroupBy />
                                        <SegmentColumn>
                                          <ColumnReference Column="Segment1015" />
                                        </SegmentColumn>
                                        <RelOp AvgRowSize="9" EstimateCPU="250.591" EstimateIO="3090.97" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="227795000" LogicalOp="Clustered Index Scan" NodeId="7" Parallel="false" Partitioned="true" PhysicalOp="Clustered Index Scan" EstimatedTotalSubtreeCost="3341.56" TableCardinality="227795000">
                                          <OutputList />
                                          <IndexScan Ordered="false" ForcedIndex="false" NoExpandHint="false">
                                            <DefinedValues />
                                            <Object Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Index="[ix_test_table_COL1]" Alias="[a]" TableReferenceId="2" IndexKind="Clustered" />
                                          </IndexScan>
                                        </RelOp>
                                      </Segment>
                                    </RelOp>
                                  </SequenceProject>
                                </RelOp>
                              </StreamAggregate>
                            </RelOp>
                          </Top>
                        </RelOp>
                        <RelOp AvgRowSize="2126" EstimateCPU="109.341" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="10" LogicalOp="Filter" NodeId="15" Parallel="false" PhysicalOp="Filter" EstimatedTotalSubtreeCost="0.356499">
                          <OutputList>
                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="ID" />
                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="FileId" />
                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL1" />
                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL2" />
                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL3" />
                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL4" />
                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL5" />
                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL6" />
                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL7" />
                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL8" />
                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL9" />
                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="HashCode" />
                            <ColumnReference Column="Expr1004" />
                          </OutputList>
                          <Filter StartupExpression="false">
                            <RelOp AvgRowSize="2134" EstimateCPU="22.7795" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="1228.53" LogicalOp="Compute Scalar" NodeId="16" Parallel="false" PhysicalOp="Compute Scalar" EstimatedTotalSubtreeCost="0.355909">
                              <OutputList>
                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="ID" />
                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="FileId" />
                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL1" />
                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL2" />
                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL3" />
                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL4" />
                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL5" />
                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL6" />
                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL7" />
                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL8" />
                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL9" />
                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="HashCode" />
                                <ColumnReference Column="Expr1004" />
                                <ColumnReference Column="Expr1013" />
                              </OutputList>
                              <ComputeScalar>
                                <DefinedValues>
                                  <DefinedValue>
                                    <ColumnReference Column="Expr1013" />
                                    <ScalarOperator ScalarString="[TEST_DB].[dbo].[test_table].[ID] as [a].[ID]%(2)">
                                      <Arithmetic Operation="MOD">
                                        <ScalarOperator>
                                          <Identifier>
                                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="ID" />
                                          </Identifier>
                                        </ScalarOperator>
                                        <ScalarOperator>
                                          <Const ConstValue="(2)" />
                                        </ScalarOperator>
                                      </Arithmetic>
                                    </ScalarOperator>
                                  </DefinedValue>
                                </DefinedValues>
                                <RelOp AvgRowSize="2126" EstimateCPU="18.2236" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="1228.53" LogicalOp="Compute Scalar" NodeId="17" Parallel="false" PhysicalOp="Sequence Project" EstimatedTotalSubtreeCost="0.355786">
                                  <OutputList>
                                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="ID" />
                                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="FileId" />
                                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL1" />
                                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL2" />
                                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL3" />
                                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL4" />
                                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL5" />
                                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL6" />
                                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL7" />
                                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL8" />
                                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL9" />
                                    <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="HashCode" />
                                    <ColumnReference Column="Expr1004" />
                                  </OutputList>
                                  <SequenceProject>
                                    <DefinedValues>
                                      <DefinedValue>
                                        <ColumnReference Column="Expr1004" />
                                        <ScalarOperator ScalarString="row_number">
                                          <Sequence FunctionName="row_number" />
                                        </ScalarOperator>
                                      </DefinedValue>
                                    </DefinedValues>
                                    <RelOp AvgRowSize="2126" EstimateCPU="4.55589" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="1228.53" LogicalOp="Segment" NodeId="18" Parallel="false" PhysicalOp="Segment" EstimatedTotalSubtreeCost="0.355688">
                                      <OutputList>
                                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="ID" />
                                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="FileId" />
                                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL1" />
                                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL2" />
                                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL3" />
                                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL4" />
                                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL5" />
                                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL6" />
                                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL7" />
                                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL8" />
                                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL9" />
                                        <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="HashCode" />
                                        <ColumnReference Column="Segment1016" />
                                      </OutputList>
                                      <Segment>
                                        <GroupBy />
                                        <SegmentColumn>
                                          <ColumnReference Column="Segment1016" />
                                        </SegmentColumn>
                                        <RelOp AvgRowSize="2118" EstimateCPU="250.591" EstimateIO="3090.97" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="1228.53" LogicalOp="Clustered Index Scan" NodeId="19" Parallel="false" Partitioned="true" PhysicalOp="Clustered Index Scan" EstimatedTotalSubtreeCost="0.355663" TableCardinality="227795000">
                                          <OutputList>
                                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="ID" />
                                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="FileId" />
                                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL1" />
                                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL2" />
                                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL3" />
                                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL4" />
                                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL5" />
                                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL6" />
                                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL7" />
                                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL8" />
                                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL9" />
                                            <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="HashCode" />
                                          </OutputList>
                                          <IndexScan Ordered="false" ForcedIndex="false" NoExpandHint="false">
                                            <DefinedValues>
                                              <DefinedValue>
                                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="ID" />
                                              </DefinedValue>
                                              <DefinedValue>
                                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="FileId" />
                                              </DefinedValue>
                                              <DefinedValue>
                                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL1" />
                                              </DefinedValue>
                                              <DefinedValue>
                                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL2" />
                                              </DefinedValue>
                                              <DefinedValue>
                                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL3" />
                                              </DefinedValue>
                                              <DefinedValue>
                                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL4" />
                                              </DefinedValue>
                                              <DefinedValue>
                                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL5" />
                                              </DefinedValue>
                                              <DefinedValue>
                                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL6" />
                                              </DefinedValue>
                                              <DefinedValue>
                                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL7" />
                                              </DefinedValue>
                                              <DefinedValue>
                                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL8" />
                                              </DefinedValue>
                                              <DefinedValue>
                                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="COL9" />
                                              </DefinedValue>
                                              <DefinedValue>
                                                <ColumnReference Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Alias="[a]" Column="HashCode" />
                                              </DefinedValue>
                                            </DefinedValues>
                                            <Object Database="[TEST_DB]" Schema="[dbo]" Table="[test_table]" Index="[ix_test_table_COL1]" Alias="[a]" TableReferenceId="1" IndexKind="Clustered" />
                                          </IndexScan>
                                        </RelOp>
                                      </Segment>
                                    </RelOp>
                                  </SequenceProject>
                                </RelOp>
                              </ComputeScalar>
                            </RelOp>
                            <Predicate>
                              <ScalarOperator ScalarString="[Expr1013]=(0)">
                                <Compare CompareOp="EQ">
                                  <ScalarOperator>
                                    <Identifier>
                                      <ColumnReference Column="Expr1013" />
                                    </Identifier>
                                  </ScalarOperator>
                                  <ScalarOperator>
                                    <Const ConstValue="(0)" />
                                  </ScalarOperator>
                                </Compare>
                              </ScalarOperator>
                            </Predicate>
                          </Filter>
                        </RelOp>
                      </NestedLoops>
                    </RelOp>
                  </Top>
                </RelOp>
              </ComputeScalar>
            </RelOp>
          </QueryPlan>
        </StmtSimple>
      </Statements>
    </Batch>
  </BatchSequence>
</ShowPlanXML>
16 ноя 12, 10:36    [13482194]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
Glory
Member

Откуда:
Сообщений: 104760
Testor1
Курсы не проходил. Не все понятно.
Вот пример плана запроса по таблице, а не из openquery

BOL - Logical and Physical Operators Reference
16 ноя 12, 10:40    [13482219]     Ответить | Цитировать Сообщить модератору
 Re: Кол-во строк в импортируемом файле  [new]
Testor1
Member

Откуда:
Сообщений: 679
Glory,

Всем привет !

Получил ответ на свой вопрос из Америки. Решение красивое, относительно простое и быстрое.
Может кому подойдет.

Полная ссылка http://social.msdn.microsoft.com/Forums/en-US/transactsql/thread/1e7a79d2-7daf-44f4-9b77-28ba25786090


CREATE TABLE #count (dummy bit NOT NULL)

CREATE TABLE test (id int NOT NULL, name nvarchar(149) NOT NULL)

SET STATISTICS IO ON

INSERT test (id, name)
   SELECT ProductID, ProductName
   FROM (MERGE #count t
         USING  (SELECT ProductID, ProductName
                 FROM   OPENROWSET(BULK  'C:\temp\slask.bcp', 
                          FORMATFILE = 'C:\temp\slask.xml') AS q) AS q ON 1 = 0
         WHEN NOT MATCHED BY TARGET THEN 
           INSERT (dummy) VALUES(1) 
         OUTPUT q.ProductID, q.ProductName) AS m
   WHERE  ProductID % 3 = 0

SET STATISTICS IO OFF

SELECT * FROM test
SELECT rows
FROM   tempdb.sys.partitions
WHERE  object_id = object_id('tempdb..#count')
go
DROP TABLE test, #count
go
26 дек 12, 23:05    [13692112]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить