Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MSFT SQL Server - Выгрузка базы в текстовый файл и загрузка обратно

Ответить
Настройки темы
MSFT SQL Server - Выгрузка базы в текстовый файл и загрузка обратно

Аватара для xoxmodav

PainStaking


Moderator


Сообщения: 3992
Благодарности: 442

Профиль | Отправить PM | Цитировать


Необходимо сделать выгрузку базы MS SQL (11 Gb) в текстовый файл, после чего осуществить его загрузку обратно в базу. Возможно ли это и как реализуется на практике?

-------
RadioActive - and therefore harmful, cynical and the extremely dangerous.


Отправлено: 11:59, 15-11-2010

 

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Жень да ты обалдел, 11 гигов в текстовик
А если серьезно, то опиши что ты хочешь получить? В текст можно перегнать только отдельные таблицы, т.к. база - это и система безопасности, и запросы, и триггеры, и планировщики и еще много чего другого.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 17:19, 15-11-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для kim-aa

Назгул


Сообщения: 2633
Благодарности: 345

Профиль | Отправить PM | Цитировать


Цитата xoxmodav:
Необходимо сделать выгрузку базы MS SQL (11 Gb) в текстовый файл, после чего осуществить его загрузку обратно в базу. Возможно ли это и как реализуется на практике? »
А пример выгрузки можно привести? Поля, например.

2) Сразу говорю, что работать такая штука будет долго. Так, что имеет смысл подумать о многоступенчатой выгрузке:
- промежуточное формирование таблицы-выгрузки в MS SQL
- выгрузка в файлы.

В один файл, я бы выгружать не рискнул. Лучше использовать наборы файлов.
Реально, больше чем 100 МБ текстовый файл я не обрабатывал.

Размер лучше подобрать эмпирическим путем, ну скажем по 100 000 строк.
Результаты работы лучше журналировать в отдельном файле.

3) Я бы пробовал реализовать такое на PERL при помощи DBI, DBD

4) А какие-либо средства импорта использовать можно?
Или хоть убейся, но нужен txt?

-------
Мы овладеваем более высоким стилем спора. Спор без фактов. Спор на темпераменте. Спор, переходящий от голословного утверждения на личность партнера. (c)Жванецкий


Отправлено: 18:20, 15-11-2010 | #3


Аватара для xoxmodav

PainStaking


Moderator


Сообщения: 3992
Благодарности: 442

Профиль | Отправить 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();
        }
    }
}
Однако на части таблиц при попытке импорта (как в существующую, так и в созданную с нуля базу) выдаёт ошибку в момент выполнения:

Цитата:
- Выполнение (Ошибка)
Сообщения
• Ошибка 0xc02020a1: Задача потока данных 1: Ошибка преобразования данных. При преобразовании данных для столбца "Столбец 23" возращено значение состояния 4 и текст состояния "Текст был усечен, или один и более символов не имеют соответствия в целевой кодовой странице.".
(Мастер импорта и экспорта SQL Server)

• Ошибка 0xc020902a: Задача потока данных 1: Сбой выходной столбец "Столбец 23" (102) из-за возникшего усечения, и стратегия обработки усечения строк в "выходной столбец "Столбец 23" (102)" определяет сбой по причине усечения. Ошибка усечения возникла в указанном объекте указанного компонента.
(Мастер импорта и экспорта SQL Server)

• Ошибка 0xc0202092: Задача потока данных 1: Ошибка при обработке строки 0 в файле "D:\11\111.txt".
(Мастер импорта и экспорта SQL Server)

Ошибка 0xc0047038: Задача потока данных 1: Код ошибки служб SSIS: DTS_E_PRIMEOUTPUTFAILED. Метод PrimeOutput для компонента компонент "Источник - 111_txt" (1) завершился сбоем с кодом ошибки 0xC0202092. Компонент вернул код ошибки при вызове метода PrimeOutput() из обработчика конвейера. Значение кода ошибки определяется компонентом, но ошибка является неустранимой, и выполнение конвейера остановлено. Возможно, до этого были опубликованы сообщения об ошибках, в которых содержатся более подробные сведения о причине сбоя.
(Мастер импорта и экспорта SQL Server)
Пробовали экспорт этих таблиц делать вручную через мастер - при импорте вываливается аналогичная ошибка.

P.S. Ошибка вываливается как на SQL 2005 SP3 (RUS), так и на SQL 2008 SP2.

P.P.S. Сейчас будем проверять работу импорта на SQL 2005 SP4 ENG.

-------
RadioActive - and therefore harmful, cynical and the extremely dangerous.


Отправлено: 15:17, 16-11-2010 | #4


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Проблема не в версиях MS SQL, а в выгруженных файлах. Встречный вопрос - а зачем придумывать велосипед то? Не проще мастером импорта-экспорта из SQL 2000 выгрузить данные таблиц, а потом сделать импорт? Или же прямо в 2005 SQL сделать импорт-экспорт с базы 2000 сиквела?

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 01:11, 17-11-2010 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MSFT SQL Server - Выгрузка базы в текстовый файл и загрузка обратно

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход