|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MSFT SQL Server - Выгрузка базы в текстовый файл и загрузка обратно |
|
MSFT SQL Server - Выгрузка базы в текстовый файл и загрузка обратно
|
PainStaking Сообщения: 3992 |
Необходимо сделать выгрузку базы MS SQL (11 Gb) в текстовый файл, после чего осуществить его загрузку обратно в базу. Возможно ли это и как реализуется на практике?
|
|
------- Отправлено: 11:59, 15-11-2010 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Жень да ты обалдел, 11 гигов в текстовик
![]() А если серьезно, то опиши что ты хочешь получить? В текст можно перегнать только отдельные таблицы, т.к. база - это и система безопасности, и запросы, и триггеры, и планировщики и еще много чего другого. |
------- Отправлено: 17:19, 15-11-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Назгул Сообщения: 2633
|
Профиль | Отправить PM | Цитировать Цитата xoxmodav:
2) Сразу говорю, что работать такая штука будет долго. Так, что имеет смысл подумать о многоступенчатой выгрузке: - промежуточное формирование таблицы-выгрузки в MS SQL - выгрузка в файлы. В один файл, я бы выгружать не рискнул. Лучше использовать наборы файлов. Реально, больше чем 100 МБ текстовый файл я не обрабатывал. Размер лучше подобрать эмпирическим путем, ну скажем по 100 000 строк. Результаты работы лучше журналировать в отдельном файле. 3) Я бы пробовал реализовать такое на PERL при помощи DBI, DBD 4) А какие-либо средства импорта использовать можно? Или хоть убейся, но нужен txt? |
|
------- Отправлено: 18:20, 15-11-2010 | #3 |
PainStaking Сообщения: 3992
|
Профиль | Отправить PM | Цитировать 1. Не получится - коммерческая тайна и всё такое.
![]() 2. Как это реализовать? 3. Не владеем - сможешь помочь? 4. Наверняка можно, но вот вот вопрос - какие средства, кроме стандартных, имеются для этого? Опишу чуть подробней ситуацию, может будет проще решить проблему: Есть старая 11 ГБ база данных MS SQL 2000 "1С: Предприятие 7" (~500 таблиц), в которой ковырялось не одно поколение программистов. Поставили задачу попробовать осуществить выгрузку данных из базы с последующей загрузкой этих данных в другую базу. Сотрудник, занимающийся этой проблемой накидал программку в C#, которая позволяет автоматизировать процесс выгрузки таблиц из базы в плоские файлы: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; using System.IO; namespace выгрузка_1С { public partial class Form1 : Form { public string s; public Form1() { InitializeComponent(); } private void Out_Click(object sender, EventArgs e) { Application.Exit(); } private void Start_Click(object sender, EventArgs e) { // string IP = Ip.Text; string IP = "10.10.10.105"; // string newbase = BaseName.Text; string newbase = "proizvod"; //string UserName = NameUser.Text; string UserName = "sa"; //string Pass = Pas.Text; string Pass = "1"; string con = @"Network address =" + IP + ";" + "user id= " + UserName + ";" + "Pwd= " + Pass; SqlConnection cn = new SqlConnection(con); string str = "use " + newbase + " SELECT QUOTENAME(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE=N'BASE TABLE';"; cn.Open(); SqlCommand Com = new SqlCommand(str, cn); SqlDataReader readerCom = Com.ExecuteReader(); int i = 0; //string s = ""; while (readerCom.Read()) { string a = readerCom[0].ToString(); SqlConnection cn1 = new SqlConnection(con); cn1.Open(); string file = @"d:\11\" + a + ".txt"; string str1 = "exec master..xp_cmdshell 'bcp " + newbase + ".dbo." + a + " out " + file + " -c -C RAW -U sa -P 1'"; SqlCommand Com1 = new SqlCommand(str1, cn1); Com1.CommandTimeout = 50000; Com1.ExecuteNonQuery(); cn1.Close(); } MessageBox.Show("111"); cn.Close(); } } } Цитата:
P.S. Ошибка вываливается как на SQL 2005 SP3 (RUS), так и на SQL 2008 SP2. P.P.S. Сейчас будем проверять работу импорта на SQL 2005 SP4 ENG. |
|
------- Отправлено: 15:17, 16-11-2010 | #4 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Проблема не в версиях MS SQL, а в выгруженных файлах. Встречный вопрос - а зачем придумывать велосипед то? Не проще мастером импорта-экспорта из SQL 2000 выгрузить данные таблиц, а потом сделать импорт? Или же прямо в 2005 SQL сделать импорт-экспорт с базы 2000 сиквела?
|
|
------- Отправлено: 01:11, 17-11-2010 | #5 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - Экспорт значений реестра в общий текстовый файл + добавление доп данных в этот файл | fedko | Скриптовые языки администрирования Windows | 0 | 17-06-2010 11:52 | |
Выборочная загрузка и выгрузка данных из формы в таблицу MySQL | dima1981 | Вебмастеру | 8 | 25-08-2008 18:02 | |
Драйвер - Загрузка и выгрузка dll через CMDline | borison | Microsoft Windows 2000/XP | 2 | 29-02-2008 17:50 | |
Прочие БД - тулза для конвертирования базы FireBird 2.0, обратно в 1.5 | Das_Monster | Программирование и базы данных | 2 | 24-02-2008 03:13 | |
mySQL или текстовый файл | chem1 | Программирование и базы данных | 12 | 02-02-2004 03:56 |
|