Экспорт данных в виде файла фиксированной ширины из SQL Server 2005 - PullRequest
3 голосов
/ 05 декабря 2008

Я думал, что это очень простая задача - экспортировать данные в виде из SQL Server 2005 в текстовый файл фиксированной ширины. Но волшебник - это боль. Формат не правильный. Кто-нибудь знает, как с этим бороться? или есть ли лучший способ сделать это?

Ответы [ 4 ]

5 голосов
/ 05 декабря 2008

Использовать bcp с опцией запроса http://msdn.microsoft.com/en-us/library/ms162802(SQL.90).aspx

bcp "SELECT * FROM AdventureWorks.Person.Contact" queryout Contacts.txt -c -T

Используйте файл формата, если вы хотите вывод с фиксированной шириной

http://weblogs.sqlteam.com/brettk/archive/2006/07/06/10504.aspx

Я только что попытался экспортировать в AdventureWorks, Fixed Width также доставил мне много проблем (по сравнению с разделителями столбцов) Мне пришлось игнорировать столбцы GUID, не включать имена столбцов в первую строку и т. Д., Наконец, экспортированная таблица Sales.Customer

Без BCP вам, возможно, придется заглянуть в SSIS или SQLCMD

1 голос
/ 06 декабря 2008

Один из вариантов - использовать OpenDataSource для записи строк в текстовый файл. Это требует, чтобы текстовый файл уже существовал, но это относительно просто.

В этой статье (для раскрытия я написал ее, и она фокусируется на чтении из, но затрагивает также и написание) объясняет основы чтения и записи из текстовых файлов с помощью OpenDataSource. : http://www.sqlservercentral.com/articles/OpenDataSource/61552/

0 голосов
/ 06 декабря 2008

Я обнаружил, что SQL2005 / SSIS совсем не прост для выполнения, казалось бы, простых задач. Вещи всегда берут меня в 5 раз дольше, чем должны. Я знаю, что я не одинок в этом.

ППГ должен работать.

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

usage: Sqlcmd            [-U login id]          [-P password]
  [-S server]            [-H hostname]          [-E trusted connection]
  [-d use database name] [-l login timeout]     [-t query timeout]
  [-h headers]           [-s colseparator]      [-w screen width]
  [-a packetsize]        [-e echo input]        [-I Enable Quoted Identifiers]
  [-c cmdend]            [-L[c] list servers[clean output]]
  [-q "cmdline query"]   [-Q "cmdline query" and exit]
  [-m errorlevel]        [-V severitylevel]     [-W remove trailing spaces]
  [-u unicode output]    [-r[0|1] msgs to stderr]
  [-i inputfile]         [-o outputfile]        [-z new password]
  [-f <codepage> | i:<codepage>[,o:<codepage>]] [-Z new password and exit]
  [-k[1|2] remove[replace] control characters]
  [-y variable length type display width]
  [-Y fixed length type display width]
  [-p[1] print statistics[colon format]]
  [-R use client regional setting]
  [-b On error batch abort]
  [-v var = "value"...]  [-A dedicated admin connection]
  [-X[1] disable commands, startup script, enviroment variables [and exit]]
  [-x disable variable substitution]
  [-? show syntax summary]
0 голосов
/ 05 декабря 2008

Если формат из мастера не соответствует вашим потребностям, вам необходимо разработать собственный пакет служб SSIS. Вы действительно нуждаетесь в файле фиксированной ширины? Файл с разделителями, вероятно, будет проще понять, так как он встречается гораздо чаще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...