Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выгрузка данных через Мастер импорта и экспорта / 17 сообщений из 17, страница 1 из 1
22.11.2018, 10:20
    #39736594
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных через Мастер импорта и экспорта
Доброго времени суток
подскажите пожалуйста:
есть запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select 
       c.CloseDate as [Дата время]
      ,cl.id_tov_cl as [ИД товар] 
      ,cl.Quantity as [кол-во]
      ,cl.BasePrice as [цена по которой купил]
      ,cl.Price_retail as [цена реальная]
      ,c.ShopNo as [номер магазина]
      ,c.CashID as [номер кассы]
      ,c.CashCheckNo as [Номер чек]   
      ,cl.CashCheckLineNo as [Позиция в чеке]
from SMS_UNION..Checks (nolock) c
join SMS_UNION..CheckLine (nolock) cl on cl.CheckUID = c.CheckUID
where c.OperationType = 1 and c.CloseDate >= DATEADD(MONTH,-1,'20181122') and c.CloseDate < '20181122'



Если выполнить COUNT(*) выходит 62 522 447 кол-во записей
Но если выгрузить через мастер, то отчет показывает, что выгружено 62 525 305 строк
при этом повторений не может быть в строках (на всякий случай)

разделитель при выгрузке '|', в полях выборки нет символов перевода корретки и "|"

Microsoft SQL Server 2008 R2 (SP3) - 10.50.6000.34 (X64) Aug 19 2014 12:21:34 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
...
Рейтинг: 0 / 0
22.11.2018, 11:04
    #39736615
iiyama
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных через Мастер импорта и экспорта
Sandist,
Есть возможность при выгрузке сделать пк или сгенерить row_number, а потом залить из полученного файла в табличку обратно и найти дубли?
...
Рейтинг: 0 / 0
22.11.2018, 11:07
    #39736618
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных через Мастер импорта и экспорта
iiyama,
дубли убрать не проблема

мне интересно, знает кто-нибудь почему такое происходит?
может кто сталкивался
...
Рейтинг: 0 / 0
22.11.2018, 12:09
    #39736676
iiyama
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных через Мастер импорта и экспорта
Sandist,

Не понял, зачем их убирать?
Вам же нужно разобраться что не так, а для этого надо найти что не так.
Может Вы банально грязные данные читаете, а потом их транзакция откатывает, кто ж знает
...
Рейтинг: 0 / 0
22.11.2018, 12:12
    #39736681
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных через Мастер импорта и экспорта
iiyama,
вряд ли конечно, но это я проверю, спасибо (не подумал про это)
а еще есть варианты?
...
Рейтинг: 0 / 0
22.11.2018, 12:53
    #39736729
Kopelly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных через Мастер импорта и экспорта
У меня мысль - возможно глупая:
Код: sql
1.
c.CloseDate < '20181122'


Разное преобразование типов дат (левая часть преобразуется в Date или правая в datetime)
...
Рейтинг: 0 / 0
22.11.2018, 13:12
    #39736749
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных через Мастер импорта и экспорта
Kopelly,
в любом случае времени это им не добавляет
а closedate сам datetime
...
Рейтинг: 0 / 0
22.11.2018, 13:29
    #39736781
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных через Мастер импорта и экспорта
Sandist,

между А и Б появляются новые записи в таблицах.
...
Рейтинг: 0 / 0
22.11.2018, 14:17
    #39736817
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных через Мастер импорта и экспорта
Владислав Колосов,

исключено, данные за предыдущие периоды не добавляются
на всякий перепроверил, сделал count(*) значение то же
...
Рейтинг: 0 / 0
22.11.2018, 14:35
    #39736832
iiyama
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных через Мастер импорта и экспорта
Sandist,
Прям заинтриговали.
Выгрузите данные в табличку.
Из таблички пакетом в файл.
Из файла обратно в другую табличку
Найти разницу.
Опубликовать шокирующие подробности в этой ветке. (Таблицы идентичны/Не идентичны/ Вот такая разница)

Делов меньше чем на полчаса на 62 млн строках
...
Рейтинг: 0 / 0
22.11.2018, 16:07
    #39736949
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных через Мастер импорта и экспорта
iiyama,
так и сделаю
в общем разберусь и отпишусь
...
Рейтинг: 0 / 0
22.11.2018, 17:23
    #39737012
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных через Мастер импорта и экспорта
SandistЕсли выполнить COUNT(*) выходит 62 522 447 кол-во записей
Но если выгрузить через мастер, то отчет показывает, что выгружено 62 525 305 строкЛибо для выгрузки и COUNT(*) используются зарные запросы, либо действительно между операциями происходит изменение количества записей.

Ещё может быть вариант, вы неправильно считаете количество выгруженных строк.

Ну и традиционно - запросы выполняются на разных серверах/БД :-)
Sandistпри этом повторений не может быть в строках (на всякий случай)Какая разница, в обоих случаях повторения не влияют на результат.
...
Рейтинг: 0 / 0
22.11.2018, 22:58
    #39737219
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных через Мастер импорта и экспорта
alexeyvg,

alexeyvgЛибо для выгрузки и COUNT(*) используются зарные запросы, либо действительно между операциями происходит изменение количества записей

Нет, запросы те же самые, изменения не происходят (проверил)
alexeyvgЕщё может быть вариант, вы неправильно считаете количество выгруженных строк.

Масте дает отчет и я сужу по кол-ву выгруженных строк, кроме того после загрузки выполнили count(*) уже на др машине и там count соответсвует кол-ву выгрузки о которой говорил мастер
alexeyvgНу и традиционно - запросы выполняются на разных серверах/БД :-)

))
...
Рейтинг: 0 / 0
22.11.2018, 23:32
    #39737228
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных через Мастер импорта и экспорта
не стал смотреть какие именно чеки "лишние", так что не знаю конкретно что отличается
но сделал 2 вещи, выгрузил все чеки во временную таблицу и затем в файл - тут уже кол-во совпало
затем решил убрать (nolock) и выгрузить из основных таблиц и так же результат совпал
я сделал вывод, что мастеру не понравился nolock, хотя, хочу повторить, задним числом данные не меняются и мой count(*) совпал с тем, что я выполнял сегодня днем

Если кто знает почему так может быть я рад буду услышать, но в целом решил проблему так
...
Рейтинг: 0 / 0
23.11.2018, 09:38
    #39737318
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных через Мастер импорта и экспорта
Sandistя сделал вывод, что мастеру не понравился nolock, хотя, хочу повторить, задним числом данные не меняются и мой count(*) совпал с тем, что я выполнял сегодня днем

Если кто знает почему так может быть я рад буду услышать, но в целом решил проблему такКак ему может не понравиться nolock :-)

Очевидно, данные меняются во время выгрузки. Может, и неявно (например, происходит расщепление страниц при вставке или изменении данных за другие даты).
...
Рейтинг: 0 / 0
23.11.2018, 10:37
    #39737355
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных через Мастер импорта и экспорта
alexeyvg,
видимо так и есть, надо покурить nolock тщательнее

всем огромное спасибо что уделили время
...
Рейтинг: 0 / 0
24.11.2018, 23:29
    #39738076
DaniilSeryi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных через Мастер импорта и экспорта
Sandistне стал смотреть какие именно чеки "лишние", так что не знаю конкретно что отличается
но сделал 2 вещи, выгрузил все чеки во временную таблицу и затем в файл - тут уже кол-во совпало
затем решил убрать (nolock) и выгрузить из основных таблиц и так же результат совпал
я сделал вывод, что мастеру не понравился nolock, хотя, хочу повторить, задним числом данные не меняются и мой count(*) совпал с тем, что я выполнял сегодня днем

Если кто знает почему так может быть я рад буду услышать, но в целом решил проблему так

Nolock чем хорош - можно не ожидать снятия с таблицы блокировок, наложенных другими транзакциями.
А чем плох - читает также "грязные данные". В общем - читаем https://docs.microsoft.com/ru-ru/sql/t-sql/statements/set-transaction-isolation-level-transact-sql?view=sql-server-2017
https://docs.microsoft.com/ru-ru/sql/t-sql/queries/hints-transact-sql-table?view=sql-server-2017
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выгрузка данных через Мастер импорта и экспорта / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]