powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Загрузка данных из большого файла
25 сообщений из 36, страница 1 из 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
25 сообщений из 36, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Загрузка данных из большого файла
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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