Salvar arquivo .RTF no banco
Moderador: Moderadores
- Rafael_Rodrigo
- Usuário Nível 1

- Mensagens: 7
- Registrado em: 12 Mar 2012 17:47
- Localização: Blumenau/SC
Salvar arquivo .RTF no banco
Bom dia a todos. Preciso salvar um arquivo .RTF no banco de dados SQL, para isto criei uma coluna do tipo VARBINARY(MAX) que irá armazenar o arquivo. O problema é que não estou conseguindo converter o arquivo para binário(sem converter não posso salvá-lo). Atualmente a rotina lê linha por linha do arquivo RTF concatena tudo numa STRING e joga para o banco. Sou novo em programação Clipper e não sei nem se isso será possível. Procurei aqui no fórum algum tópico parecido mas nada encontrei.
desde já agradesço a ajuda de todos,
Rafael Rodrigo.
desde já agradesço a ajuda de todos,
Rafael Rodrigo.
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Salvar arquivo .RTF no banco
Olá!
Você não informa qual é o banco. Também não está claro onde entra a programação Clipper neste caso.
Independentemente do banco, creio que a melhor saída, neste caso, seja salvar como caracter. Troque VARBINARY por VARCHAR.
Você não informa qual é o banco. Também não está claro onde entra a programação Clipper neste caso.
Independentemente do banco, creio que a melhor saída, neste caso, seja salvar como caracter. Troque VARBINARY por VARCHAR.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- Rafael_Rodrigo
- Usuário Nível 1

- Mensagens: 7
- Registrado em: 12 Mar 2012 17:47
- Localização: Blumenau/SC
Salvar arquivo .RTF no banco
Olá, o banco de dados é SQL SERVER 2008 R2, eu citei somente "SQL" acima hehe ..quanto a programação em clipper ?? citei acima que minha rotina salva no banco(campo "text" no banco, "varchar" é praticamente a mesma coisa pois posso definir como "varchar(max)") uma string contendo o arquivo lido linha por linha e que agora preciso gravar no banco não esta string mas sim o arquivo .RTF em si, ou seja tenho que converter este arquivo para binário para posteriormente salvá-lo, portanto para salvar em binário preciso definir uma coluna como "varbinary". Minha dificuldade está em escrever o código que vai 'pegar' os bytes do arquivo .RTF
att,
Rafael Rodrigo.
att,
Rafael Rodrigo.
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Salvar arquivo .RTF no banco
Olá!
Eu salvo conteúdo de arquivos desse tipo como varchar em SQL SERVER 2008 R2. Tente algo do tipo
Eu salvo conteúdo de arquivos desse tipo como varchar em SQL SERVER 2008 R2. Tente algo do tipo
Código: Selecionar todos
cSQL := "INSERT tabela (texto) VALUES '" + MemoRead( "Arquivo.RTF" ) + "'"[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- Rafael_Rodrigo
- Usuário Nível 1

- Mensagens: 7
- Registrado em: 12 Mar 2012 17:47
- Localização: Blumenau/SC
Salvar arquivo .RTF no banco
Oi novamente, pois é eu também fazia desta maneira .. a função MemoRead(string) vai retornar o conteúdo do arquivo, é a mesma coisa que eu ler linha por linha do arquivo e depois salvar. Mas o problema é que o arquivo .RTF que eu tenho que salvar tem cerca de 3 milhões de caracteres ai fica dificil hehe .. por este motivo estava pensando em salvar o arquivo como binário. De qualquer maneira agradesço a ajuda.
att,
Rafael Rodrigo.
att,
Rafael Rodrigo.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Salvar arquivo .RTF no banco
Uma ideia: pegue esse conteúdo e aplique alguma função de compressão. Acredito que o hash MD5 pode vir a servir. Principalmente se existem espaços ou caracteres muito repetidos...o problema é que o arquivo .RTF que eu tenho que salvar tem cerca de 3 milhões de caracteres
Pesquise algo do tipo: sqlite3_bind_text( pStmt, 3, hb_md5(enum:__enumKey) ) que tem como exemplo no C:\MiniGUI\SAMPLES\Advanced\SQLITE\authorizer.prg
É ou não é para Clipper ? Ou está migrando de Clipper para... ?eu citei somente "SQL" acima hehe ..quanto a programação em clipper ??
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
- Rafael_Rodrigo
- Usuário Nível 1

- Mensagens: 7
- Registrado em: 12 Mar 2012 17:47
- Localização: Blumenau/SC
Salvar arquivo .RTF no banco
Bom dia, estou pesquisando como utilizar o hash MD5 que o colega Pablo indicou.. a aplicação é para Clipper, apesar de estarmos migrando o sistema para JAVA.
Mesmo se a idéia de utilizar hash MD5 for válida para o meu caso, será que é possivel salvar um arquivo no banco de dados em uma aplicação Clipper ??
Ja tentei desta maneira:
1 - Passando o arquivo como parâmetro.
2 - Passando o local em disco do arquivo como parâmetro.
Neste segundo caso, ele irá salvar somente o caminho do arquivo hehe, claro. E no primeiro, ao meu ver deveria salvar o arquivo como binário.
att,
Rafael Rodrigo.
Mesmo se a idéia de utilizar hash MD5 for válida para o meu caso, será que é possivel salvar um arquivo no banco de dados em uma aplicação Clipper ??
Ja tentei desta maneira:
1 - Passando o arquivo como parâmetro.
Código: Selecionar todos
pFile := FOpen2(cPath + "\temp\$confctr.Rtf", FO_READ)
oStmt:= SQLStatement{ "UPDATE TS1_COTR SET COTR1_FILE = (?) WHERE COTR1_COD = " + NTrim(nCotr1_Cod), oConn }
oStmt:Execute(pFile)Código: Selecionar todos
oStmt:= SQLStatement{ "UPDATE TS1_COTR SET COTR1_FILE = (?) WHERE COTR1_COD = " + NTrim(nCotr1_Cod), oConn }
oStmt:Execute(cPath + "\temp\$confctr.Rtf")att,
Rafael Rodrigo.
Salvar arquivo .RTF no banco
Amigo, MD5 cria uma assinatura, no seu caso do arquivo, mais não é compactação. Voce não irá "compactar" um arquivo gerando por exemplo um MD5 (A1B2C52D15G55111S52E2S5) e depois recuperar isso como o arquivo original.Rafael_Rodrigo escreveu:utilizar hash MD5
Isso não é Clipper, não seria x[H]arbour ou Java? Com Clipper puro, não vai conseguir conexão com seu banco de dados usando SQL.pFile := FOpen2(cPath + "\temp\$confctr.Rtf", FO_READ)
oStmt:= SQLStatement{ "UPDATE TS1_COTR SET COTR1_FILE = (?) WHERE COTR1_COD = " + NTrim(nCotr1_Cod), oConn }
oStmt:Execute(pFile)
O Clipper usa padrão DBF, que pode conter um campo memo, o limite deste campo é 64k, apenas.Rafael_Rodrigo escreveu:será que é possivel salvar um arquivo no banco de dados em uma aplicação Clipper
Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
- Rafael_Rodrigo
- Usuário Nível 1

- Mensagens: 7
- Registrado em: 12 Mar 2012 17:47
- Localização: Blumenau/SC
Salvar arquivo .RTF no banco
Boa tarde. Pois é Andril, descobri a pouco que não tenho como recuperar os dados originais com hash MD5 T_T ..
Alguém saberia responder se é possível salvar no banco de dados um arquivo .RTF ou alguma outra extensão qualquer?
att,
Rafael Rodrigo.
Para o Clipper foram desenvolvidos RDDs que permitem o uso de SGBD, como o ADS Advantage Database Server, o RaSQL/b para Btrieve/Pervasive e o UltiRoute, que possibilita o acesso a qualquer SGBD via ODBC. Aqui mesmo no fórum tem um pequeno exemplo Conectar Clipper con sqlANDRIL escreveu:Isso não é Clipper, não seria x[H]arbour ou Java? Com Clipper puro, não vai conseguir conexão com seu banco de dados usando SQL.
Alguém saberia responder se é possível salvar no banco de dados um arquivo .RTF ou alguma outra extensão qualquer?
att,
Rafael Rodrigo.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Salvar arquivo .RTF no banco
Quer outro conselho ? Eu apenas guardaria o nome de cada arquivo e armazenaria esses arquivos RTF em pasta separadas, até poderia sub-dividir a pasta caso houvera muita quantidade de arquivos. Então os agruparia de 100 em 100. Incorporar esses arquivo no BD, na minha opinião: é desnecessário. Mas ainda tratando-se de Clipper...
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Salvar arquivo .RTF no banco
Não como seria em SQL, mas tratando de Clipper e DBF. A sugestão que dei de compactar para que ocupe o menor espaço possível dentro de campo MEMO, apesar que detesto e não utilizo de jeito nenhum campo MEMO.Alguém saberia responder se é possível salvar no banco de dados um arquivo .RTF ou alguma outra extensão qualquer?
Dependendo da sua criatividade, você poderia primeiro compactar o arquivo com zip ou arj. Uma vez compactado, você poderia criar uma função que leia o arquivo byte a byte e transforme ele em Hexadecimal cada caracter, esse valor vai estar no modo texto e daí então gravá-lo no campo MEMO. Para poder ler o conteúdo, você precisará fazer a operação inversa: transformar hex em decimal, gravar em arquivo zip/arj e descompactá-lo. Uma operação um tanto esquisita, mas tá ai uma forma que poderia ser feita em Clipper.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
