Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Экспорт из таблицы sql в текстовый файл. / 25 сообщений из 36, страница 1 из 2
10.04.2018, 20:05
    #39628107
OlegEgorov11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
Помогите пожалуйста в решении проблемы. Имеется таблица где есть 10 столбцов и 3 тысячи строк. Используя команду bcp, я экспортирую данные из таблицы в файл txt данные. Они попадают в него одной строкой. Используя разделить строки, ROWTERMINATOR ='\n', можно ли сделать так, чтобы например первые 7 столбцов были на 1 строке, а начиная с 8 столбца данные попадали на вторую строку, а с 3-й строки шла уже новая запись с таблицы sql в том же формате, т.е. 7 столбцов на 3 строке, 3 столбца на 4й и т.д.
...
Рейтинг: 0 / 0
10.04.2018, 20:07
    #39628108
OlegEgorov11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
Т.е. как сделать разделение строк в результирующем файле по названию столбца, но чтобы оставшиеся столбцы попадали на следующую строку. поле имеет тип данных varchar 100
...
Рейтинг: 0 / 0
10.04.2018, 20:18
    #39628111
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
Скармливайте bcp не таблицу, а запрос, который собирает все поля записи в одно текстовое со всеми нужными разделителями, переводами строк и прочей шелухой.
...
Рейтинг: 0 / 0
10.04.2018, 20:49
    #39628118
OlegEgorov11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
Akina,
а вы не могли бы привести пример селекта, где выводится результат в том формате, какой я описал?
...
Рейтинг: 0 / 0
10.04.2018, 20:49
    #39628120
Дедушка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
OlegEgorov11можно ли сделать так, чтобы например первые 7 столбцов были на 1 строке, а начиная с 8 столбца данные попадали на вторую строкувопрос, а зачем?
...
Рейтинг: 0 / 0
10.04.2018, 21:33
    #39628134
OlegEgorov11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
Дедушка, нужно для одного проекта, по другому никак не решить. Возможно ли запросом на выборку в самом sql сделать такое? либо же создать временную таблицу куда будут копироваться строки в таком формате поле чего уже с помощью bcp сделать то, что мне нужно?
...
Рейтинг: 0 / 0
10.04.2018, 21:53
    #39628142
Дедушка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
вас устроит если в файле будет вот так:

p1;p2;p3;p4;p5
p6;p7;;;;
p1;p2;p3;p4;p5
p6;p7;;;;

здесь разделитель ; для наглядности
?
...
Рейтинг: 0 / 0
10.04.2018, 21:56
    #39628144
OlegEgorov11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
Дедушка, да, это именно то, что мне нужно. столбец p5 имеет тип данных varchar(100). не могу понять как сделать, чтобы при экспорте в текстовый файл было именно такое представление. Выше посоветовали сделать именно выборку такую в sql сначала.
...
Рейтинг: 0 / 0
10.04.2018, 21:58
    #39628145
Andy_OLAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
OlegEgorov11Дедушка, да, это именно то, что мне нужно. столбец p5 имеет тип данных varchar(100). не могу понять как сделать, чтобы при экспорте в текстовый файл было именно такое представление. Выше посоветовали сделать именно выборку такую в sql сначала.
2 раздельных текстовых файла, у которых будет одинаковое количество строк. И простой скрипт на powershell, который сделает третий файл, читая первую строку из первого файла, затем первую из второго, затем вторую из первого и вторую из второго и так далее. Кошерных примеров в гугле можно найти таки вагон и небольшую тележку.

Нужно поступать как советские инженеры - максимально упрощать задачу.
...
Рейтинг: 0 / 0
10.04.2018, 21:59
    #39628146
OlegEgorov11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
Дедушка, для примера, у меня сейчас все идет в одну строку:
p1p2...p7.
Если р1 имеет varchar(4) а в таблице только 3 символа то в текстовом файле записывается 3 символа и один пробел.
То же самое и с р5, у него в таблице 100 символов, но там в основном занято по 60-70, остальное пробелы в текстовом файле. И мне нужно чтобы после пробелов, после 100 символов остальное шло на следующую строку и т.д.
...
Рейтинг: 0 / 0
10.04.2018, 22:00
    #39628147
OlegEgorov11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
Andy_OLAP, гениально, спасибо большое. Попробую так, но мне кажется, что можно сделать это все и в sql.
...
Рейтинг: 0 / 0
10.04.2018, 22:14
    #39628154
OlegEgorov11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
Andy_OLAP, посмотрел материал по поводу объединения двух текстовых файлов, пишут что очень долго делает даже небольшие объемы
...
Рейтинг: 0 / 0
10.04.2018, 22:17
    #39628159
Andy_OLAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
OlegEgorov11Andy_OLAP, посмотрел материал по поводу объединения двух текстовых файлов, пишут что очень долго делает даже небольшие объемы
Попробуйте готовое решение . Думаю, скорость будет приемлимой.
...
Рейтинг: 0 / 0
10.04.2018, 22:18
    #39628160
Andy_OLAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
OlegEgorov11,

Только там в одну строку соединяют 2 строки, а Вам нужно с разделителем, чтобы тоже 2 строки получилось. Цикл отработает достаточно быстро.
...
Рейтинг: 0 / 0
10.04.2018, 22:22
    #39628161
OlegEgorov11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
Так как столбец после которого нужно внести разделение имеет 10 и более пробелов возможно ли сделать разделение при помощи bcp, где разделителем выступают пробелы, как например((**\t**, end, !!!!!!!!!!, \t—\n и т. д.)), в этом случае я просто в bcp после запроса добавлю скобки в которых будут пробелы ( )?
...
Рейтинг: 0 / 0
10.04.2018, 22:25
    #39628162
Дедушка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
как запасной вариант:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
declare @t table (i int)
declare @p table (p1 char(2), p2 char(2), p3 char(2), p4 char(2), p5 char(2))

insert @t (i)
select
	row_number()over(order by (select 1)) - 1
from
	(values (0),(0),(0),(0),(0),(0),(0),(0),(0),(0)) t1(i)
	cross join (values (0),(0),(0),(0),(0),(0),(0),(0),(0),(0)) t2(i)

insert @p (p1, p2, p3, p4, p5)
values
	('A1', 'B1', 'C1', 'D1', 'E1'),
	('A2', 'B2', 'C2', 'D2', 'E2'),
	('A3', 'B3', 'C3', 'D3', 'E3')

;
with
t1 as
	(
	select
	p1, p2, p3, rn + i as n
	from
	(
	select
	p1, p2, p3, row_number()over(order by (select 1)) as rn
	from
	@p p
	)q
	inner join @t t on t.i = q.rn - 1
	),
t2 as
	(
	select
	p4 as p1, p5 as p2, null as p3, rn + i as n
	from
	(
	select
	p4, p5, row_number()over(order by (select 1)) as rn
	from
	@p p
	)q
	inner join @t t on t.i = q.rn
	)

select
	p1, p2, p3, n
from
	t1
union all
select
	p1, p2, p3, n
from
	t2
order by
	n

далее выгрузка через bcp
...
Рейтинг: 0 / 0
10.04.2018, 22:34
    #39628163
OlegEgorov11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
Дедушка, спасибо))
...
Рейтинг: 0 / 0
11.04.2018, 10:11
    #39628275
OlegEgorov11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
Дедушка, подскажите, тот запрос, что вы написали, он представляет матрицу(А1,В1,С1и т.д) в формате который мне нужен, но как сделать выборку в этом формате из селектра, где построчно выводится тысячи строк к примеру из 10 столбцов?
...
Рейтинг: 0 / 0
11.04.2018, 10:31
    #39628279
OlegEgorov11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
Дедушка, я, так понимаю, что нужно вместо матрицы добавить селект, но тогда ругается на несовместимость values, хотя в начале запроса я исправляю, как у меня в таблице, varchar и т.д
...
Рейтинг: 0 / 0
11.04.2018, 11:31
    #39628303
OlegEgorov11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
Дедушка, или нужно делать весь этот запрос из нужного мне селекта?
...
Рейтинг: 0 / 0
11.04.2018, 11:53
    #39628313
Дедушка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
OlegEgorov11,

@p - это ваша таблица (замените @p на dbo.MyTable, например)
в t1 поля p1, p2, p3 это поля вашей таблицы которые "должны быть в первой строке файла",
а в t2 поля p4, p5 это оставшиеся поля вашей таблицы которые "должны быть во второй строке файла"
...
Рейтинг: 0 / 0
11.04.2018, 12:26
    #39628332
OlegEgorov11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
Дедушка, при замене в 4х местах @р на имя таблицы, после дбо, в первом месте, подчеркивает точко, как некорректный синтаксес
...
Рейтинг: 0 / 0
11.04.2018, 19:39
    #39628710
OlegEgorov11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
Дедушка, а можно в этом запросе где нибудь вставить условие, либо же делать отдельно запрос с условием и от него уже этот запрос?
...
Рейтинг: 0 / 0
11.04.2018, 19:57
    #39628711
Дедушка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
Получайте нужные вам данные любым нужным вам запросом.
Сохраняйте результат этого запроса во временную таблицу (#p, например).
В приведённом выше коде убираете создание и заполнение таблицы @p (тестовая).
В t1 и t2 заменяете @p на #p.
...
Рейтинг: 0 / 0
12.04.2018, 20:34
    #39629469
OlegEgorov11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из таблицы sql в текстовый файл.
Дедушка, спасибо, у меня все получилось, только один вопрос. Можно ли как то убрать столбец с номером, я понимаю что по нему идет сортировка, но он мне сильно мешается, есть вариант засунуть весь этот запрос в подзапрос и оттуда уже выбрать без столбца этого?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Экспорт из таблицы sql в текстовый файл. / 25 сообщений из 36, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]