powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Загрузка данных из большого файла
36 сообщений из 36, показаны все 2 страниц
Загрузка данных из большого файла
    #39959265
estro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.
Работаем с СУБД Оракл много лет, но тут принесли файл, сказали дамп базы, размером в 43 гигабайта и сказали нужно в этом дампе найти все данные по нескольким организациям. Файл текстовый, с расширением sql такого вида:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
USE [prdb]
GO
/****** Object: Table [dbo].[Address] Script Date: 18.01.2020 13:39:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Address](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[PostCode] [nvarchar](6) NULL,
[Text] [nvarchar](150) NULL,
CONSTRAINT [PK_Address] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Organ] Script Date: 18.01.2020 13:39:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Organ](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[Text] [nvarchar](2000) NULL,
[Inn] [nvarchar](20) NOT NULL,
[Date] [datetimeoffset](7) NULL,
[Status] [int] NOT NULL,
[Type] [int] NOT NULL,
CONSTRAINT [PK_Organ] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
--и другие таблицы, описанные подобным образом
SET IDENTITY_INSERT [dbo].[Address] ON

INSERT [dbo].[Address] ([Id], [PostCode], [Text]) VALUES (1, N'4000000', N'Ленина 27')
--и другие подобные строки на 43 гигабайта, на разные таблицы. Таблицы заполняются по очереди.



Никаких объяснений по файлу нет.
Судя по OPTIMIZE_FOR_SEQUENTIAL_KEY это Ms sql 2019. У нас имеется развернутый в свое время сервер БД MS sql 2016 Enterprise, но использовать его так и не пришлось и человек, кто этим занимался уволился, поэтому задание поручили мне.
Вопрос, каким образом загрузить данные этого файла в БД? В SSMS ничего подобного не нашел. Может можно как то выполнить этот sql запрос, чем он по сути и является, но не получается это сделать, слишком большой размер.
Поиском пользовался, но ничего подобного не нашел.
Спасибо за помощь.
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959266
NORT96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробуй грузить кусочками
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959267
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959272
estro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,
Спасибо, попробую, но только завтра и отпишусь, уверен был, что есть что-то подобное, как в Oracle.
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959283
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
estro,

Можно взять grep и ничего никуда не грузить. Судя по [dbo].[Organ] sql тебе ничем не поможет. Общую структуру только понять надо.

Ставишь cygwin/wsl/linux и делаешь
grep "<строчка-которую-надо-найти>" файл-в-котором-ищешь > файл-в-который-сохранить-результат
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959287
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
estro
человек, кто этим занимался уволилс

Это он не спроста.
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959339
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
estro,

Залить файл можно из командной строки используя sqlcmd
https://docs.microsoft.com/en-us/sql/tools/sqlcmd-utility?view=sql-server-ver15

Поскольку в файле упомянуты фичи от 2019, то можно их убрать перед первым запуском.
Базу лучше перевести в SIMPLE режим, чтобы лог не раздувался.

Полагаю, что потребуется несколько попыток, чтобы залилось успешно.
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959357
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
estro,

файл можно попробовать выполнить с помощью SQLCMD.EXE. Большой может не поместиться в буфере SSMS.
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959371
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad
Поскольку в файле упомянуты фичи от 2019, то можно их убрать перед первым запуском.


поставить временный 2019 инстанс будет всяко быстрее
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959387
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критик
komrad
Поскольку в файле упомянуты фичи от 2019, то можно их убрать перед первым запуском.


поставить временный 2019 инстанс будет всяко быстрее

В общем - да, но всё зависит от возможностей автора - есть ли куда ставить, захочет ли морочиться и т.п.
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959405
Нестандартное мышление
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
estro,



По мне так проще сделать скрипт и распарсить этот запрос в CSV файл и пульнуть BULK'ом в таблицу
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959445
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сначала надо убедиться, что в файле все корректно подготовлено, что не факт. Пролистать пару десятков страниц в толковом редакторе на предмет паразитного переноса строки, корректных кавычек, дат и т.д.
Потом можно наваять простую прогу, которая будет построчно оттуда вычитывать и выполнять.

Готовые решения под подобные задачи на редкость унылы.
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959459
Нестандартное мышление
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo,

Паразитные строки скриптом игнорить
Обработчик грамотный нужен.
Но согласен, решение сложное.
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959523
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo
Сначала надо убедиться, что в файле все корректно подготовлено, что не факт. Пролистать пару десятков страниц в толковом редакторе на предмет паразитного переноса строки, корректных кавычек, дат и т.д.
Потом можно наваять простую прогу, которая будет построчно оттуда вычитывать и выполнять


Решение должно быть эффективным с точки зрения затрат времени, и уж явно разработка дополнительного ПО не является правильным путём решения задачи)
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959543
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критик
и уж явно разработка дополнительного ПО не является правильным путём решения задачи)
Ну как сказать... Правильным, если задача будет успешно решена. В том числе повторно.

Может получиться, что без дополнительного ПО придется долго плясать с бубном. И в ручном режиме кое-как медленно и печально выполнить задачу. Без возможности быстрого повторения.

Тем более, что такая прога пишется за полчаса. И на подготовку данных для нее вообще ничего не надо. Просто скормить файл и получить наполненные таблицы.
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959610
Нестандартное мышление
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критик
L_argo
Сначала надо убедиться, что в файле все корректно подготовлено, что не факт. Пролистать пару десятков страниц в толковом редакторе на предмет паразитного переноса строки, корректных кавычек, дат и т.д.
Потом можно наваять простую прогу, которая будет построчно оттуда вычитывать и выполнять


Решение должно быть эффективным с точки зрения затрат времени, и уж явно разработка дополнительного ПО не является правильным путём решения задачи)


С таким подходом предлагаю распечатать файл на бумаге в ворде и посадить оператора вводить данные вручную.

Эффект 146%
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959632
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo
Потом можно наваять простую прогу, которая будет построчно оттуда вычитывать и выполнять.
Разве SQLCMD не делает это?
По моему, у неё нет ограничений на размер файла.
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959713
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
estro,

без развертывания базы "найти все данные по нескольким организациям" скорее всего будет сложно. Вы не знаете структуру данных, какие там справочники, если они вообще есть, читаемо ли там созданы ключи или придется догадываться, есть ли там процедуры, триггеры и тп.

Хорошо бы иметь запросы, которые делались к этой базе.

ИМХО я бы сначала прошерстил файл в текстовом виде (нужен хороший редактор, например консольный) на предмет какие там таблицы/объекты, потом бы развернул нужные таблицы, возможно не в полном объёме, и там уже смотреть по месту.
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959725
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
estro
принесли файл, сказали дамп базы, размером в 43 гигабайта и сказали нужно в этом дампе найти все данные по нескольким организациям. Файл текстовый, с расширением sql такого вида:
Да уж, тот кто создал этот файл троль был знатный)))
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959764
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нестандартное мышление
С таким подходом предлагаю распечатать файл на бумаге в ворде и посадить оператора вводить данные вручную.
Эффект 146%
Это бла-бла-бла поумничать ниачомъ.
Мой опыт показывает, что такой подход работает. Мне попадались разные файлы с данными. И часто приходилось к ним делать "индивидуальный подход", т.к. стандартные инструменты откровенно пасовали.
В этих файлах встречались: глючные строки, разделители, форматы, разнородные форматы (н-р дат или чисел), автозамены каких-то спецсимволов, мягкие переносы, двойные переносы, БОМы, хаос с кавычками и т.д.

Помню встретился в теле файла древний символ "конец данных". Не помню его аски-номера, но был такой. Стандартный импорт тупо стопорил на этом символе, а текстовый редактор его показывал обычным пробелом. Пришлось призадуматься. Благо, что нашел и все зашло стандартно.

"А ты говоришь купаться — вода холодная" (с)
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959816
estro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо, сегодня вышел на работу и занялся загрузкой этого файла через sqlcmd, все скушало, но загрузив чуть более 5 млн. строк (это около 5 %) все встало из за ошибки "105 уровень 15 незакрытие строки в конце символьной строки", а это печаль и боль.
Неужели нельзя игнорировать эти ошибки? Ну не смогла строчку загрузить, пусть дальше идет!
Таблиц всего 5 и найти связи между ними можно, id у всех есть.
Парсить файл не хотелось бы, но видимо придется или нет?
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959817
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
estro
Неужели нельзя игнорировать эти ошибки?
Нельзя. Это ошибка компиляции, а не выполнения.

Можете написать простенький парсер, который разобьет исходный файл на множество мелких по разделителю "go"
Потом последовательно их в цикле выполнять.
Так править подобные ошибки будет намного легче.
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959818
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
estro
Парсить файл не хотелось бы, но видимо придется или нет?

Да выбери что надо grep'ом на коленке, что ты мучаешься? Если там всего 5 таблиц. Найди idшники нужные и вперёд.
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959819
estro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crutchmaster,

grep не поможет, id повторяются, не уникальные для всей БД. Я пробовал в тотале по f3 искать так, тяжело и не интересно. :)
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959822
estro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Критик,
22135663
Mssql 2016 тоже должен все это скушать, кроме этого ключа, остальное создалось норм.
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959823
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
estro,

Кинь структуру.
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959824
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
estro
id повторяются, не уникальные для всей БД.

Ничего не мешает по списку id grep'ать и по регулярке.
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959830
estro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crutchmaster,

Чем может помочь структура?
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959833
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
estro,

Мыслей может подкинет.
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959835
estro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crutchmaster,
grep не выход еще и потому, что сегодня нужны эти организации, завтра другие.
Буду грузить sqlcmd, до ошибки, потом обрубать загруженное сверху и дальше грузить. Осталось придумать как обрубать сверху и сохранить то что снизу.
Но копать пока буду в этом направлении. :)
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959836
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
estro
Осталось придумать как обрубать сверху и сохранить то что снизу.

tail
:)
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959860
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
estro

Буду грузить sqlcmd, до ошибки, потом обрубать загруженное сверху и дальше грузить. Осталось придумать как обрубать сверху и сохранить то что снизу.

полагаю, что структура залилась успешно в итоге
касательно данных: разбейте инсерты по-таблично на отдельные файлы, так хоть сузите проблемную зону
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959880
Нестандартное мышление
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo
Нестандартное мышление
С таким подходом предлагаю распечатать файл на бумаге в ворде и посадить оператора вводить данные вручную.
Эффект 146%
Это бла-бла-бла поумничать ниачомъ.
Мой опыт показывает, что такой подход работает. Мне попадались разные файлы с данными. И часто приходилось к ним делать "индивидуальный подход", т.к. стандартные инструменты откровенно пасовали.
В этих файлах встречались: глючные строки, разделители, форматы, разнородные форматы (н-р дат или чисел), автозамены каких-то спецсимволов, мягкие переносы, двойные переносы, БОМы, хаос с кавычками и т.д.

Помню встретился в теле файла древний символ "конец данных". Не помню его аски-номера, но был такой. Стандартный импорт тупо стопорил на этом символе, а текстовый редактор его показывал обычным пробелом. Пришлось призадуматься. Благо, что нашел и все зашло стандартно.

"А ты говоришь купаться — вода холодная" (с)


Если это рабочий SQL скрипт, то он формализован. Ошибок в нем быть не должно.
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959902
estro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нестандартное мышление,

Не должно но вот вышло. В общем сделал в windows: геморно, не по феншую, но потратил менее часа и теперь грузится.
В Тотал коммандере воспользовался функцией разбить файл, поделив 43 гб на 11 файлов по 4 гб.
Затем EditPadLite открывал файлы и приводил сверху и снизу к оконченному варианту (строки состыковывал).
Затем UltraEdit Text Editor конвертировал файл в ANSI, при этом размер уменьшался в 2 раза.
И затем sqlcmd гружу. Если пара файлов без ошибок загрузится, запущу батник на ночь.
Всем спасибо, очень помогли ( с Оракла уйду на постгрес :) )
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959948
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
estro

Затем UltraEdit Text Editor конвертировал файл в ANSI, при этом размер уменьшался в 2 раза.


FYI Это вы потеряли юникод - читай информацию, если там были символы юникодные типа ё всяких.
...
Рейтинг: 0 / 0
Загрузка данных из большого файла
    #39959987
estro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PizzaPizza,
О как, спасибо, буду копать в этом направлении.
...
Рейтинг: 0 / 0
36 сообщений из 36, показаны все 2 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Загрузка данных из большого файла
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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