Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Экспорт таблицы в текстовик  [new]
Затык
Guest
Таблица в 100млн записей, которые надо вылить в плоский текстовый файл с разделителями.
Можно написать прогу, но должны же наверно быть готовые инструменты.
Скачал SSDT, установил. Захожу в программы (Win10) и в этом бестолковом и неудобном списке не ясно что запускать и где этот самый SSDT и какую именно тулзу надо искать и запускать.
Пишут еще про некую прогу bcp командной строки.
Нашел описание и пример запуска:
bcp AdventureWorks2012.Sales.Currency out Currency.dat -T -c

Но т.к. сервер установлен криво (несколько раз пытался установить, то один, то другой вариант, снося предыдущие) bcp не стартует:
Unable to load BCP resource DLL.
27 сен 16, 11:34    [19712406]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт таблицы в текстовик  [new]
Затык
Guest
Есть еще мастер импорта экспорта (32 и 64).
Запускаю, выбираю источник данных "MS OLEDB provider for SQL Server", далее жмем на выпадающий список "Имя сервера", прога наглухо подвисает и привет.
27 сен 16, 11:40    [19712451]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт таблицы в текстовик  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21249
Загрузи Access, создай новую БД, прилинкуй в неё нужную таблицу, и экспортируй её в CSV...
27 сен 16, 11:42    [19712465]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт таблицы в текстовик  [new]
Затык
Guest
Akina
Загрузи Access, создай новую БД, прилинкуй в неё нужную таблицу, и экспортируй её в CSV...

Хороший простой вариант, но у меня офиса нет и не предвидится :)
"Мастер импорта экспорта" отвис, прописал сам имя сервера, вроде подконнектился, указал какую таблицу выгружать и в какой файл.
Но обломался по такой ошибке
Столбцы[accnum] имеет тип данных DT_NTEXT, не поддерживаемый файлами в ANSI. Используйте вместо него DT_TEXT, а преобразование в DT_NTEXT производите при помощи компонента преобразования данных.
(Мастер импорта и экспорта SQL Server)

В самом мастере нашел только "Сопоставление". Где искать этот компонент преобразования данных не понял.
27 сен 16, 12:00    [19712638]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт таблицы в текстовик  [new]
982183
Member

Откуда: VL
Сообщений: 3386
тут обсасывалось

16399543
27 сен 16, 12:09    [19712703]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт таблицы в текстовик  [new]
982183
Member

Откуда: VL
Сообщений: 3386
А для CSV в management studio есть такая возможность.

Другое дело, что при таком кол-ве будет ли всё это работать?
27 сен 16, 12:13    [19712719]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт таблицы в текстовик  [new]
Затык
Guest
982183
тут обсасывалось

Там бестолково имхо обсасывалось. Хорошо бы конкретный пример.
Или (пока сам тыкаю) на данный момент, что за компонент преобразования данных, на который указывает мастер экспорта/импорта.
982183
А для CSV в management studio есть такая возможность.
Другое дело, что при таком кол-ве будет ли всё это работать?

Больше вопрос все-таки не "есть ли такая возможность", а где ее найти в кучке существующих приблуд )
27 сен 16, 12:19    [19712757]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт таблицы в текстовик  [new]
Затык
Guest
Вроде нашел. Оказывается, есть отдельно "Мастер преобразования" жесть жестяная имхо, но придется курить видимо )
27 сен 16, 12:24    [19712789]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт таблицы в текстовик  [new]
982183
Member

Откуда: VL
Сообщений: 3386
формируешь запрос. а потом "сохранить результат как"
27 сен 16, 12:37    [19712862]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт таблицы в текстовик  [new]
982183
Member

Откуда: VL
Сообщений: 3386
Правая клавиша мыши - "создать скрипт для таблицы"-"используя SELECT"-"новое окно редактора запросов"
Нажимаем - Выполнить
Появляется окно с данными.
Правая клавиша мыши - "сохранить результат как"
Передаем данные в файл.
27 сен 16, 12:37    [19712865]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт таблицы в текстовик  [new]
Затык
Guest
982183, нет так он похоже, начинает забирать все данные на машину, загружая их в память, тупо сжирает всю память и падает (при том, что памяти 6 гигов).
27 сен 16, 12:53    [19712947]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт таблицы в текстовик  [new]
Затык
Guest
Затык
Вроде нашел. Оказывается, есть отдельно "Мастер преобразования"

Нет, это не то. "Мастер преобразования проектов" какой-то.
27 сен 16, 12:54    [19712955]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт таблицы в текстовик  [new]
Затык
Guest
В общем с мастером понятно, остается разобраться с ошибками, которые он выдает )
Ошибка 0xc020802e: Задача потока данных 1: Назначение - acc_txt.Входы[Вход назначения "Неструктурированный файл"].Столбцы[accnum] имеет тип данных DT_NTEXT, не поддерживаемый файлами в ANSI. Используйте вместо него DT_TEXT, а преобразование в DT_NTEXT производите при помощи компонента преобразования данных.
(Мастер импорта и экспорта SQL Server)

Ок. Захожу в этом же мастере в сопоставления, выставляю для accnum DT_TEXT, снова импорт и снова эта же ошибка.
Где надо производить преобразование не ясно.
27 сен 16, 13:03    [19713004]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт таблицы в текстовик  [new]
Затык
Guest
Поменял кодировку (поставил UNICODE), процесс пошел. Ждемс что получится на выходе.
27 сен 16, 13:09    [19713059]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт таблицы в текстовик  [new]
982183
Member

Откуда: VL
Сообщений: 3386
Затык
982183, нет так он похоже, начинает забирать все данные на машину, загружая их в память, тупо сжирает всю память и падает (при том, что памяти 6 гигов).


Ну так разбей таблицу на части.
И по частям экспортируй.
27 сен 16, 13:10    [19713069]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт таблицы в текстовик  [new]
Затык
Guest
982183
Ну так разбей таблицу на части.
И по частям экспортируй.

[youtube=]
27 сен 16, 13:18    [19713122]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт таблицы в текстовик  [new]
Затык
Guest
Затык
Поменял кодировку (поставил UNICODE), процесс пошел. Ждемс что получится на выходе.

На выходе получили файл в юникоде, все казалось бы хорошо, но теперь, чтобы залить его в другую базу, там надо практически в два раза больше места по два байта на символ, что совсем негуд.

То есть вопрос остается открытым.
Как решить
Ошибка 0xc020802e: Задача потока данных 1: Назначение - acc_txt.Входы[Вход назначения "Неструктурированный файл"].Столбцы[accnum] имеет тип данных DT_NTEXT, не поддерживаемый файлами в ANSI. Используйте вместо него DT_TEXT, а преобразование в DT_NTEXT производите при помощи компонента преобразования данных.
(Мастер импорта и экспорта SQL Server)

В сопоставлении столбцов при импорте менял тип на разные варинаты, все равно вылезает эта ошибка.

Как/где правильно преобразовать типы при экспорте? Что за компонент преобразования данных, где он?
27 сен 16, 15:59    [19714248]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт таблицы в текстовик  [new]
Затык
Guest
В общем поля в таблице имеют тип NVARCHAR, соответственно при экспорте они мапятся в DT_NTEXT
и в самом мастере попытки переконвертить их в DT_TEXT не прокатывают.
Поэтому делаю экспорт не целиком таблицы, а по запросу, а уже в запросе через CAST приводим поля к типу VARCHAR.
Работает это гораздо медленнее, чем если не кастовать, ну и экспорт таким образом через запрос не знаю прокатит ли такой объем.
В общем пока не в восторге как-то от MSSQL-ича )
27 сен 16, 16:59    [19714634]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт таблицы в текстовик  [new]
Затык
Guest
Мда... Судя по скорости выгрузки (500 зап/сек), 100млн будут выливаться ооочень долго, больше двух суток.
Неужели все так грустно? Ау ) (если этим мастером экспорта/импорта делать выгрузку целиком таблицы, а не селектом с CAST-ами полей, то выгружается ощутимо быстрее, если даже не на порядок).
27 сен 16, 17:14    [19714710]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт таблицы в текстовик  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Затык,
сделайте вторую таблицу на основе первой с уже cast-нутым полем, потом вторую на export пустите.
27 сен 16, 17:33    [19714806]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт таблицы в текстовик  [new]
Nemoxur
Member

Откуда:
Сообщений: 179
А не проще линкед сервер подключить и экспортировать данные в другую БД?
Зачем эти манипуляции с текстом?
27 сен 16, 17:36    [19714820]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт таблицы в текстовик  [new]
Затык
Guest
WarAnt, была такая мысль, но не будет ли это то же самое по скорости: создать таблицу с кастом на 100млн записей тоже не быстро ж будет. Или однозначно быстрее?

Nemixur, и такой вариант рассматривался, но пока отложен за не имением нормального канала связи к целевой БД.
27 сен 16, 17:51    [19714909]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт таблицы в текстовик  [new]
komrad
Member

Откуда:
Сообщений: 5739
WarAnt
Затык,
сделайте вторую таблицу на основе первой с уже cast-нутым полем, потом вторую на export пустите.

зачем задваивать данные?
создать вью и её выливать
27 сен 16, 18:34    [19715106]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт таблицы в текстовик  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31960
Затык
Но т.к. сервер установлен криво (несколько раз пытался установить, то один, то другой вариант, снося предыдущие) bcp не стартует:
Unable to load BCP resource DLL.
Найдите на сервере разные версии bcp, попробуйте их запустить с явным указанием пути, возможно, запускается не та прога - бывает...
Это будет самый быстрый и беспроблемный вариант.

И -c можно не использовать, если для переноса данных, будет быстрее.
28 сен 16, 00:26    [19716199]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить