powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Перенос данных из MS SQL сервера
14 сообщений из 14, страница 1 из 1
Перенос данных из MS SQL сервера
    #39765199
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго времени суток.

Есть такая задача, нужно перенести данные из MS SQL Server в другую базу.

Структуру таблиц MS SQL Server запрашиваю из его метаданных. По ним формирую скрипты для создания таблиц в другой базе (например PostgreSql).

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

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

Для передачи данных планирую использовать Dapper (хотя думаю, наверное лучше от него отказаться в пользу, формирования прямых SQL команд, т.е. получаю данные из MS SQL, и на основании их формирую команды INSERT в другую базу).

Так выглядит решение в лоб (загрузить все данные из таблички и вставить в другую базу):

Загрузка данных:
Код: c#
1.
2.
3.
4.
using (IDbConnection db = new SqlConnection(data.SqlConToMsSql))
                {
                    listData = db.Query(data.SelectData).ToList();
                }



Вставка данных:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
using (IDbConnection dbPsql = new NpgsqlConnection(data.SqlConToPgSql))
                {
                    dbPsql.Open();
                    var count = await dbPsql.ExecuteAsync(data.InsertData, listData);
                    s.Stop();
                    Console.WriteLine($"В БД записано {count} строк за {s.ElapsedMilliseconds / 1000d} секунд.");
                    Console.ResetColor();
                    return -1;
                }



Модератор: Учимся использовать тэги оформления кода - FAQ
...
Рейтинг: 0 / 0
Перенос данных из MS SQL сервера
    #39765248
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikola1982нужно перенести данные из MS SQL Server в другую базу
1) репликация
2) это задача админская, поэтому лучше средствами админа (бэкап, дампы, репликация, зеркало, link, sql.
Зачем через клиента перегонять базы?
...
Рейтинг: 0 / 0
Перенос данных из MS SQL сервера
    #39765284
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikola1982то это может привести к печальным последствиям.
Мне бы хотелось переносить данные скажем по 10К записейможно поподробнее вот это место?
...
Рейтинг: 0 / 0
Перенос данных из MS SQL сервера
    #39765431
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Наш админ посмотрел, почесал затылок, сказал нет таких средств, что бы перегнать средствами базы, все таблицы и данные из MS SQL в PostgreSql.

Где об этом можно почитать?
...
Рейтинг: 0 / 0
Перенос данных из MS SQL сервера
    #39765432
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Promikola1982то это может привести к печальным последствиям.
Мне бы хотелось переносить данные скажем по 10К записейможно поподробнее вот это место?

о чем именно?
Про то что если загрузить в память 10КК записей, то сервак может стать колом?

Или про пакетную обработку данных?
...
Рейтинг: 0 / 0
Перенос данных из MS SQL сервера
    #39765433
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Select * from table это не проблема для MSSQL, даже при миллионе записей в table.

Проблема потом это записать в БД-получатель. Через insert это будет очень медленно. В MS SQL для такого есть bulk insert

В постгресе должно быть что-то похожее.
...
Рейтинг: 0 / 0
Перенос данных из MS SQL сервера
    #39765436
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikola1982Где об этом можно почитать?рядом ветка постгри.
Выше сказали что труднее всего писать в базу а не читать.
Значит надо сначала спросить у профи в той ветке. Как и в каком формате перегнать базу в постгри.
...
Рейтинг: 0 / 0
Перенос данных из MS SQL сервера
    #39765453
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сохраняете данные из MS SQL утилитой bcp в csv-файл, потом загружаете данные в PostgreSQL командой COPY.
И не надо гонять данные через клиента, ибо изврат.
...
Рейтинг: 0 / 0
Перенос данных из MS SQL сервера
    #39765455
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegabyteСохраняете данные из MS SQL утилитой bcp в csv-файл, потом загружаете данные в PostgreSQL командой COPY.
+1
...
Рейтинг: 0 / 0
Перенос данных из MS SQL сервера
    #39765651
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegabyteСохраняете данные из MS SQL утилитой bcp в csv-файл, потом загружаете данные в PostgreSQL командой COPY.
И не надо гонять данные через клиента, ибо изврат.

спасибо.
буду смотреть в сторону этих команд.
...
Рейтинг: 0 / 0
Перенос данных из MS SQL сервера
    #39765653
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему хочу программой, потому что для работы нужно только указать строку подключения к одной базе и строку подключения к другой базе. Плюс пользователей базы. При этом программа может быть запущена на обычном рабочем ПК, где нет большого объема ОЗУ и дискового пространства.
Дальше запускаем программу, она смотрит структуру базы в MS SQL сервере, создает сама точно такую же структуру в PgSQL и сама заливает туда данные. Понятно, что это будет работать долго на больших объемах, но эти издержки меня устраивают.

Хотя понимаю, что можно делать все то же самое программой с помощью утилит баз.
...
Рейтинг: 0 / 0
Перенос данных из MS SQL сервера
    #39765654
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И да понятно, что потом админу нужно будет создать индексы и сложные ограничения.
...
Рейтинг: 0 / 0
Перенос данных из MS SQL сервера
    #39765669
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikola1982,
Делай в программе. Только готовить скрипт или файл который перекидывается на шару с бд и уже там запускается.
Твой клиент и драйвер не использует ничего у себя на машине.
В этом основное отличие админки.
...
Рейтинг: 0 / 0
Перенос данных из MS SQL сервера
    #39765675
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо за советы.
буду пробовать.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Перенос данных из MS SQL сервера
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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