Fórum [Script-Postgre]Não consigo inserir path correto #26798
05/12/2007
0
Pessoal...
Estou com um problema pra rodar um script em PostgreSQL.
É que tenho uma tabela de parâmetros e preciso inserir os paths de onde devo buscar os arquivos ou salvar arquivos.
Eu sei que pra inserir um path no banco de dados eu devo colocar contra-barra dupla (\\), mas quando vou conferir no banco, estes campos foram inseridos com aspas simples.
Meu script está assim:
[i:83b772986c]INSERT INTO tblParametro (intPKParametro, strParametro, strDescricao, strValorParametro) VALUES (13, ´caminho_imagem´, ´Local de armazenamento de imagens dos pacientes´, ´c:\\Projeto\\imagens\\´);[/i:83b772986c]
Minha base foi criada com Encoding = SQL_ASCII
Alguém pode me ajudar?
Estou com um problema pra rodar um script em PostgreSQL.
É que tenho uma tabela de parâmetros e preciso inserir os paths de onde devo buscar os arquivos ou salvar arquivos.
Eu sei que pra inserir um path no banco de dados eu devo colocar contra-barra dupla (\\), mas quando vou conferir no banco, estes campos foram inseridos com aspas simples.
Meu script está assim:
[i:83b772986c]INSERT INTO tblParametro (intPKParametro, strParametro, strDescricao, strValorParametro) VALUES (13, ´caminho_imagem´, ´Local de armazenamento de imagens dos pacientes´, ´c:\\Projeto\\imagens\\´);[/i:83b772986c]
Minha base foi criada com Encoding = SQL_ASCII
Alguém pode me ajudar?
Marcos.gandin
Curtir tópico
+ 0
Responder
Posts
29/12/2007
Mleal
Marcos,
Fiz testes simulando o seu problema e obtive os resultados abaixo:
CREATE TABLE tblParametro (intPK int8, strPar varchar(60), strDescr varchar(60), pathPar path)
INSERT INTO tblParametro (intPK, strPar, strDescr, pathPar) VALUES (13, ´caminho_imagem´, ´Local de armazenamento de imagens dos pacientes´, ´[(1,1),(1,2)]´);
INSERT INTO tblParametro (intPK, strPar, strDescr, pathPar) VALUES (13, ´caminho_imagem´, ´Local de armazenamento de imagens dos pacientes´, ´((1,1),(1,2))´);
Após as inserções emiti um SELECT, com os resultados abaixo:
13;´caminho_imagem´;´Local de armazenamento de imagens dos pacientes´;´[(1,1),(1,2)]´
13;´caminho_imagem´;´Local de armazenamento de imagens dos pacientes´;´((1,1),(1,2))´
A documentação informa que as chaves indicam um path aberto, enquanto os parenteses indicam um path fechado.
Não faço a menor idéia de como utilizar estas coordenadas para acessar diretórios. Acho melhor definir o campo como varchar e tratar o conteúdo diretamente como uma string.
abçs
MLeal :P
Fiz testes simulando o seu problema e obtive os resultados abaixo:
CREATE TABLE tblParametro (intPK int8, strPar varchar(60), strDescr varchar(60), pathPar path)
INSERT INTO tblParametro (intPK, strPar, strDescr, pathPar) VALUES (13, ´caminho_imagem´, ´Local de armazenamento de imagens dos pacientes´, ´[(1,1),(1,2)]´);
INSERT INTO tblParametro (intPK, strPar, strDescr, pathPar) VALUES (13, ´caminho_imagem´, ´Local de armazenamento de imagens dos pacientes´, ´((1,1),(1,2))´);
Após as inserções emiti um SELECT, com os resultados abaixo:
13;´caminho_imagem´;´Local de armazenamento de imagens dos pacientes´;´[(1,1),(1,2)]´
13;´caminho_imagem´;´Local de armazenamento de imagens dos pacientes´;´((1,1),(1,2))´
A documentação informa que as chaves indicam um path aberto, enquanto os parenteses indicam um path fechado.
Não faço a menor idéia de como utilizar estas coordenadas para acessar diretórios. Acho melhor definir o campo como varchar e tratar o conteúdo diretamente como uma string.
abçs
MLeal :P
Responder
Gostei + 0
29/12/2007
Mleal
Marcos,
Complementando a resposta anterior, se vc definir o campo path como string é tranquilo, veja:
CREATE TABLE tblParametro (intPK int8, strPar varchar(60), strDescr varchar(60), pathPar varchar(100));
INSERT INTO tblParametro (intPK, strPar, strDescr, pathPar) VALUES (13, ´caminho_imagem´, ´Local de armazenamento de imagens dos pacientes´, ´c:\\Projeto\\imagens\\´);
Após um SELECT, este foi o resultado:
13;´caminho_imagem´;´Local de armazenamento de imagens dos pacientes´;´c:\Projeto\imagens\´
Observe que a ´\´ adicional funciona como caractere de escape e informa ao processador para tratar o próximo caractere literalmente. Daí, no resultado final a string path perde uma barra. O processador a engoliu.
Para gravar é necessário a barra invertida adicional, para leitura, o path virá limpo p/ vc, apenas com uma barra invertida.
abçs
MLeal :P
Complementando a resposta anterior, se vc definir o campo path como string é tranquilo, veja:
CREATE TABLE tblParametro (intPK int8, strPar varchar(60), strDescr varchar(60), pathPar varchar(100));
INSERT INTO tblParametro (intPK, strPar, strDescr, pathPar) VALUES (13, ´caminho_imagem´, ´Local de armazenamento de imagens dos pacientes´, ´c:\\Projeto\\imagens\\´);
Após um SELECT, este foi o resultado:
13;´caminho_imagem´;´Local de armazenamento de imagens dos pacientes´;´c:\Projeto\imagens\´
Observe que a ´\´ adicional funciona como caractere de escape e informa ao processador para tratar o próximo caractere literalmente. Daí, no resultado final a string path perde uma barra. O processador a engoliu.
Para gravar é necessário a barra invertida adicional, para leitura, o path virá limpo p/ vc, apenas com uma barra invertida.
abçs
MLeal :P
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)