MS SQL дамп базы - C#

Узнай цену своей работы

Формулировка задачи:

Доброе время суток. Помогите разобраться с происходящим. Есть задача перенести базу из MS SQL в MуSQL. Мучаюсь уже два дня. успел много чего интересного прочитать и насобирать на просторах интернета, но скаждым разом все больше и больше вопросов. Начну все поэтапно: А. Нашел простенький код, но не доконца его понял, т. к. в MS SQL и С# новичек. Код работает, но у меня куча вопросов. Итак: 1. Пожалуйста расшифруйте эту строку:

"select name from sys.Tables where schema_id = 1";

Как я понимаю, то этот запрос выбирает полностью все ячейки моей базы (из всех таблиц и полей этих таблиц) или я как всегда ошибаюсь и этот запрос выбирает только поля таблиц или только их название? Не понятно что такое "name" и что значит "schema_id = 1". Ну а "sys.Tables" - это как мне кажеться аналог mysql-ной INFORMATION_SCHEMA, хотя я и в этом то не уверен, так как сегодня уже имел дело с "dbo.sysobjects". 2. И вот он - ужас). Половину (самую простую) этого кода я осознал и усвоил, но если у кого есть время то зацените:
DataTable tables = new DataTable(); 
string sqlTables = "select name from sys.Tables where schema_id = 1"; //непонятный для меня запрос
using (SqlDataReader rdr = new SqlCommand(sqlTables, con).ExecuteReader()) //тут все вроде понятно
{
tables.Load(rdr); //понятно частично - я понимаю, что здесь в tables мы размещаем все таблицы, с из ячейками полями и их свойствами
}
 
DataSet db = new DataSet();
foreach (DataRow table in tables.Rows) //ну вот и отсюда то и начинается дремучий лес.
{
string tableName = (string)table["name"]; //опять это "name". Не понимаю, что это за строка или поле или че вообще в себе сейчас содержит "table" и "table["name"]"
string sql = string.Format("select * from [{0}]", tableName); //здесь у меня даже и предположений нет что чувак, писавший эту часть кода здесь делает и что значит этот запрос "select * from [{0}]"
SqlCommand cmd = new SqlCommand(sql, con); //это понятно - выбирает из базы, то что мне не понятно
SqlDataAdapter da = new SqlDataAdapter(cmd); //не понятно
da.TableMappings.Add("Table", tableName); //не понятно
da.Fill(db); //не понятно

}
 
db.WriteXml(Console.Out, XmlWriteMode.WriteSchema); //"Console.Out" - это выводит на экран в виде хml, а вот для чего нужно "XmlWriteMode.WriteSchema" тож не ясно!
Вообщем если у кого есть желание закоментить этот код в местах "не понятно" милости прошу) Ну и плюс желательно помочь со вторым вопром, потомучто чую я что разгадка там таится! 3. Теперь я сам себя спрашиваю, а по правильному пути ли я пошел и может не нужно было ввязывать сюда хml, потому что я уже тяжело представляю как я потом буду это все вынимать, парсить и вставлять в MуSQL? В общем у кого какие идеи есть - говорите! Использовать программы для миграции баз из MS SQL в MуSQL нельзя. Хотя, не буду таить - пробовал использовать, но ничего не получилось. Я просто не могу законектится к MS SQL серверу по 1433 порту (у меня вообще какие-то непонятки с этим портом - я его даже включить не могу, но это из другой оубрики). Получается только через shared memory, а где это нужно указывать в утилитах для миграции я так и не нашел, если кто знает как то тож скажите, буду благодарен. Всем заранее спасибо!

Решение задачи: «MS SQL дамп базы»

textual
Листинг программы
foreach (DataRow table in tables.Rows) //ну вот и отсюда то и начинается дремучий лес.
{
string tableName = (string)table["name"]; //Получаем имя таблицы
string sql = string.Format("select * from [{0}]", tableName); //форматируем запрос вида SELECT * FROM [Orders]
SqlCommand cmd = new SqlCommand(sql, con); //Создаем команду
SqlDataAdapter da = new SqlDataAdapter(cmd); //Инициализируем адаптер данных для заполнения DataSet
da.TableMappings.Add("Table", tableName); //Назначаем имя таблицы в наборе данных
da.Fill(db); //заполняем таблицу из запроса
   foreach(DataColumn col in db.Tables[tablename].Columns)
   {
        // здесь код для создания текста запроса формата "insert into " + tableName + "(`х1`, `х2`, `х3`) values('у1', 'у2', 'у3')"
        // сам заголовок получаем col.Caption;
   }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.4 из 5
Похожие ответы