Usuário com melhor resposta
CHAR(13).. QUAL A SUA REAL FINALIDADE?

Pergunta
-
Olá, galera!.
eu gostaria de realizar quebra de linha sendo que em cada linha hávera 90 caracteres.
pelo que eu entendi o char(13) é responsável por isso.. porém não entendi o seu funcionamento..
gostaria de mais esclarecimentos!
priscila henriques
Respostas
-
Vamos por partes:
A variavel que vc preenche @MONTAR_ARQUIVO é apenas para imprimir o cabeçalho correto?
O char(13) pode entrar no fim do select desta forma:
set @MONTAR_ARQUIVO = 'bcp "SELECT ''Ref. Carta GCONF Nº '' + SUBSTRING(CONVERT(VARCHAR(4),ANO),1,4)+ ''/'' + CONVERT(VARCHAR(2),NUMERO) ,DATA_EMISSAO, CABECALHO + CHAR(13) FROM Reqjud.dbo.OFICIO_MODELO where id_oficio_modelo = '''+ CONVERT(VARCHAR(2),@ID_OFICIO_MODELO) + ''' " queryout ' + @MONTAR_ARQUIVO + ' -c -C ACP -t \n -S ' + @@SERVERNAME + ' -T'
Eu não entendi porque vc utiliza a mesma variavel depois do queryout que teoricamente deveria ter o nome do arquivo onde os dados seriam exportados.
Abs.
Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
- Marcado como Resposta Priscila henriques quinta-feira, 9 de fevereiro de 2012 23:21
Todas as Respostas
-
O CHAR é uma função que retorna um caracter baseado no código que você passa como parâmetro. No caso do 13, o CHAR retorna o ENTER. Portanto, funciona como uma quebra de linha.
Leonardo Borges 'Xis'
"Mas a persistência é o que leva a perfeição."
Se a resposta for útil, marque-a. Poderá ser útil para outros desenvolvedores. -
Perfeito, Leonardo! A quebra de linha ocorre por campo ou posso realizar N quebras de linha dentro de um campo. Ou as duas formas estão corretas? A pergunta está sendo realizada porque o char(13) não está refletindo no meu arquivo. A) Select utilizados: "SELECT ''Ref. Carta GCONF Nº '' + SUBSTRING(CONVERT(VARCHAR(4),ANO),1,4)+ ''/'' + CONVERT(VARCHAR(2),NUMERO) ,DATA_EMISSAO,SUBSTRING(CABECALHO,1,50) + CHAR(13) + SUBSTRING(CABECALHO,51,100) FROM Reqjud.dbo.OFICIO_MODELO where id_oficio_modelo = '''+ CONVERT(VARCHAR(2),@ID_OFICIO_MODELO) + ''' " queryout ' + @MONTAR_ARQUIVO + ' -c -C ACP -t \n -k -S ' + @@SERVERNAME B) Dentro do arquivo não sendo realizado a quebra de linha o que está retornando no me arquivo: Ref. Carta GCONF Nº 2010/14 2011-10-26 00:00:00.000 Ao Poder Judiciário do estado da Bahia 1ª Vara de (X) Família, Sucessões, Òrfãos, Interditos e Ausentes da Comarca de Salvador A/C juiz Adenilson Barbos. onde eu marquei com (x) significa que o char(13) está sendo entendido como um caractere estranho.como trabalhar com quebra de linha quando se trata de BCP? att,
priscila henriques
-
-
Priscila o char(13) geralmente é utilizado para informar que conjunto de caracteres terá uma quebra de linha. Eu particulamente utilizei o char(13) no SQL em dois momentos:
1 - Para exportar arquivos textos com tamanho fixo via SSIS, colocando o char(13) no último campo para realizar a quebra da linha.
2 - Procurar o caracter 13 em campos tipo texto para substituição.
Se o seu objetivo é quebrar as linhas dentro do arquivo texto o BCP através da opção -c já inclui o char(13) no final de cada linha.
Se o seu objetivo não for este, por favor, poste maiores detalhes sobre sua necessidade.
Abs.
Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
-
-
Eduardo!. o que eu desejo é que dentro do meu arquivo cada linha tenha 90 caracteres. existe a possibilidade fazer isso? atráve do bcp. eu utlizei o substring para isso, estaria correto! = SUBSTRING(CABECALHO,1,50) + CHAR(13) + SUBSTRING(CABECALHO,51,100) att,
priscila henriques
-
Eduardo, eu simulei no console o select que você postou. a parti de que parâmetros é realizado a quebra de linha quando se trata do -c?. eu utilizei o /n e a quebra foi realizada por campo. a minha tabela tem 6 campos então será realizada 6 quebras de linha. att,
priscila henriques
-
-
é isso!.. no meu select : set @MONTAR_ARQUIVO = 'bcp "SELECT ''Ref. Carta GCONF Nº '' + SUBSTRING(CONVERT(VARCHAR(4),ANO),1,4)+ ''/'' + CONVERT(VARCHAR(2),NUMERO) ,DATA_EMISSAO, CABECALHO FROM Reqjud.dbo.OFICIO_MODELO where id_oficio_modelo = '''+ CONVERT(VARCHAR(2),@ID_OFICIO_MODELO) + ''' " queryout ' + @MONTAR_ARQUIVO + ' -c -C ACP -t \n -S ' + @@SERVERNAME + ' -T' exec master..xp_cmdshell @MONTAR_ARQUIVO eu coloquei \n, até ai tudo bem. é isso que eu queria.. so que tem um campo chamado text na tabela que possui muitos das e quando é exportado para o arquivo este mesmo não faz a quebra de linha, porque (\n) e uma quebra de linha feita por campo. como eu poderia fazer um quebra de linha internamente em um campo?.. aí nesta caso entraria o char(13), só que a quebra não é realizada. att
priscila henriques
-
-
Vamos por partes:
A variavel que vc preenche @MONTAR_ARQUIVO é apenas para imprimir o cabeçalho correto?
O char(13) pode entrar no fim do select desta forma:
set @MONTAR_ARQUIVO = 'bcp "SELECT ''Ref. Carta GCONF Nº '' + SUBSTRING(CONVERT(VARCHAR(4),ANO),1,4)+ ''/'' + CONVERT(VARCHAR(2),NUMERO) ,DATA_EMISSAO, CABECALHO + CHAR(13) FROM Reqjud.dbo.OFICIO_MODELO where id_oficio_modelo = '''+ CONVERT(VARCHAR(2),@ID_OFICIO_MODELO) + ''' " queryout ' + @MONTAR_ARQUIVO + ' -c -C ACP -t \n -S ' + @@SERVERNAME + ' -T'
Eu não entendi porque vc utiliza a mesma variavel depois do queryout que teoricamente deveria ter o nome do arquivo onde os dados seriam exportados.
Abs.
Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
- Marcado como Resposta Priscila henriques quinta-feira, 9 de fevereiro de 2012 23:21
-
olá, Eduardo..
eu não sei o que acontece..
no trabalho tudo que eu posto fica desformatado e não tenho a opção de formatação, devido a isto as pessoas do fórum não conseguem entender. Vou verificar se é o bloqueio ou navegador.
o meu código é este:
set @MONTAR_ARQUIVO = 'bcp "SELECT ''Ref. Carta GCONF Nº '' + SUBSTRING(CONVERT(VARCHAR(4),ANO),1,4) + ''/'' + CONVERT(VARCHAR(10),NUMERO) ,DATA_EMISSAO,CABECALHO FROM Reqjud.dbo.OFICIO_MODELO where id_oficio_modelo = '''+ CONVERT(VARCHAR(2),@ID_OFICIO_MODELO) + ''' " queryout ' + @MONTAR_ARQUIVO
+ ' -c -C ACP -k -t \n -S '
+ @@SERVERNAME
+ ' -T'exec master..xp_cmdshell @MONTAR_ARQUIVO,
Eduardo irei fazer o que você disse e te dou uma resposta.
Obrigada, mesmo.
priscila henriques
-
-