MS SQL дамп базы - C#
Формулировка задачи:
Доброе время суток. Помогите разобраться с происходящим. Есть задача перенести базу из MS SQL в MуSQL. Мучаюсь уже два дня. успел много чего интересного прочитать и насобирать на просторах интернета, но скаждым разом все больше и больше вопросов. Начну все поэтапно:
А. Нашел простенький код, но не доконца его понял, т. к. в MS SQL и С# новичек. Код работает, но у меня куча вопросов. Итак:
1. Пожалуйста расшифруйте эту строку:
Вообщем если у кого есть желание закоментить этот код в местах "не понятно" милости прошу) Ну и плюс желательно помочь со вторым вопром, потомучто чую я что разгадка там таится!
3. Теперь я сам себя спрашиваю, а по правильному пути ли я пошел и может не нужно было ввязывать сюда хml, потому что я уже тяжело представляю как я потом буду это все вынимать, парсить и вставлять в MуSQL?
В общем у кого какие идеи есть - говорите!
Использовать программы для миграции баз из MS SQL в MуSQL нельзя. Хотя, не буду таить - пробовал использовать, но ничего не получилось. Я просто не могу законектится к MS SQL серверу по 1433 порту (у меня вообще какие-то непонятки с этим портом - я его даже включить не могу, но это из другой оубрики). Получается только через shared memory, а где это нужно указывать в утилитах для миграции я так и не нашел, если кто знает как то тож скажите, буду благодарен.
Всем заранее спасибо!
"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" тож не ясно!
Решение задачи: «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; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д