Serão usados algums recursos práticos de ETL no Postgres, e conversão de encondig de arquivos.
Tomei por base a Bíblia Sagrada na Tradução de João Ferreira de Almeida, Edição Revista e Corrigida em Português-Brasil.
Como estudioso da Bíblia e crente, entendo que o Autor da Bíblia está vivo, assim sempre que tenho alguma dúvida sobre sobre algum tópico deste livro consulto a Ele, o criador de todas as coisas, DEUS.
Essa base em csv pode ser também usada com algumas adaptações em outros SGBDs a exemplo Oracle, SQL Server, MySQL, Firebird ou outro que você queira usar, neste artigo usei
Postgres
Tomei como referencia uns arquivos gerados em csv com encoding em UTF8, neste caso podendo até serem abertos como planilhas Open-Office ou MS-Excel.
Deixo aqui meu profundo agradecimento ao irmãos que voluntariamente, tiveram o trabalho de converter uma base txt para csv, não é fácil, que DEUS os abençõe!
Mãos a massa!
Antes, apenas definindo o que é um arquivo CSV ou melhor lembrando... :)
Retirado do Wikipedia em: http://pt.wikipedia.org/wiki/Comma-separated_values
Comma-separated values (CSV), em português Valores Separados por Vírgula, é um formato de arquivo que armazena dados tabelados, cujo grande uso data da época dos mainframes. Por serem bastante simples, arquivos .csv são comuns em todas as plataformas de computador.
O CSV é um implementação particular de arquivos de texto separados por um delimitador, que usa a vírgula e a quebra de linha para separar os valores. O formato também usa as aspas em campos no qual são usados os caracteres reservados (vírgula e quebra de linha). Essa robustez no formato torna o CSV mais amplo que outros formatos digitais do mesmo segmento.
Caso queira mudar o encoding, você poderá utilizar o iconv do Linux em http://www.gnu.org/software/libiconv/documentation/libiconv/iconv.1.html ou salvar como txt e abrir pelo MS-Excel, que o mesmo pedirá qual encoding utilizar-converter.
Segue os arquivos em formato CSV da Bíblia:
Biblia_JFARC.zip
No nosso caso, o arquivo está zipado e contém três CSV 1-Testamento_JFARC, 2-Livro_JFARC, 3-Palavra_JFARC:
Para que o script SQL funcione sem alterações descompactei o arquivo no Windows em: c:\Biblia_JFARC, no Linux em: /home/postgres/Biblia_JFARC/ lembrando de dá permissões para acesso com usuário postgres
Além dos Scripts SQL para Postgres, também estão a base de dados para SQL Server e Firebird para Bíblia conforme link abaixo:
Biblia_JFARC.zip
Neste artigo iremos abordar a criação de scripts DDL/DML (SQL) para criação da base de dados da Bíblia no Postgres:
-- -- Nome Artefato/Programa..: Biblia_ddl.sql -- Autor(es)...............: Emerson Hermann (emersonhermann@gmail.com) -- Data Inicio ............: 04/02/2011 as 20:45 -- Data Atual..............: 07/02/2011 as 18:50 -- Versao..................: 0.05 -- Compilador/Interpretador: PostgreSql/PLpgSQL -- Sistemas Operacionais...: Linux/Windows -- SGBD....................: PostgreSql 8.x/9.x -- Kernel..................: Nao informado! -- Finalidade..............: Script de criação de estrutura de base de dados da Bíblia Sagrada -- ........................: -- OBS.....................: -- /* --Poderia se criar dominio, como exemplo abaixo, já que é uma tabela pequena e imutavél, --porém por questão de compatibilidade com outros SGBDRs, deixamos como um tabela. DROP DOMAIN IF EXISTS id_testamento_dominio; CREATE DOMAIN id_testamento_dominio AS smallint CHECK ( VALUE IN ( 1 --Antigo Testamento , 2 --Novo Testamento ) ); COMMENT ON DOMAIN id_testamento_dominio IS 'Dominio do Testamento'; */ DROP TABLE IF EXISTS Testamento; CREATE TABLE testamento ( id_testamento smallint NOT NULL PRIMARY KEY , nome varchar(21) NOT NULL ); COMMENT ON TABLE Testamento IS 'Tabela que armazena os Testamentos da Bíblia'; COMMENT ON COLUMN Testamento.id_testamento IS 'Chave primária da tabela'; COMMENT ON COLUMN Testamento.nome IS 'Nome do Testamento'; DROP TABLE IF EXISTS Livro; --DROP TABLE IF EXISTS Livro CASCADE; CREATE TABLE Livro ( id_livro serial , ordem_livro smallint NOT NULL , id_testamento smallint NOT NULL , nome varchar(42) NOT NULL , abrev varchar(4) NOT NULL , CONSTRAINT Livro_pkey PRIMARY KEY (id_livro) , CONSTRAINT Livro_id_testamento_fkey FOREIGN KEY (id_testamento) REFERENCES Testamento (id_testamento) ); COMMENT ON TABLE Livro IS 'Tabela que armazena os Livros da Bíblia'; COMMENT ON COLUMN Livro.id_livro IS 'Id do Livro da Bíblia'; COMMENT ON COLUMN Livro.ordem_livro IS 'Número de ordem do Livro da Bíblia'; COMMENT ON COLUMN Livro.id_testamento IS 'Número do Testamento'; COMMENT ON COLUMN Livro.nome IS 'Nome completo do Livro da Bíblia'; COMMENT ON COLUMN Livro.abrev IS 'Nome abreviado do Livro da Bíblia'; DROP TABLE IF EXISTS Palavra; CREATE TABLE Palavra ( id_palavra serial , id_livro integer NOT NULL , capitulo smallint NOT NULL , versiculo smallint NOT NULL , texto TEXT , CONSTRAINT Palavra_pkey PRIMARY KEY (id_palavra) , CONSTRAINT Palavra_id_livro_fkey FOREIGN KEY (id_livro) REFERENCES Livro (id_livro) ); COMMENT ON TABLE Palavra IS 'Tabela que armazena os versiculos da Bíblia'; COMMENT ON COLUMN Palavra.id_livro IS 'Id do Livro da Bíblia'; COMMENT ON COLUMN Palavra.capitulo IS 'Número do capítulo da Bíblia'; COMMENT ON COLUMN Palavra.versiculo IS 'Número do versículo da Bíblia'; COMMENT ON COLUMN Palavra.texto IS 'Texto do versículo da Bíblia'; INSERT INTO Testamento (id_testamento, nome) VALUES (1,'Velho Testamento'); INSERT INTO Testamento (id_testamento, nome) VALUES (2,'Novo Testamento'); SELECT * FROM Testamento; --linux COPY livro(ordem_livro, id_testamento, nome, abrev) FROM '/home/postgres/Biblia_JFARC/2_Livro_JFARC.csv' CSV HEADER; --windows COPY livro(ordem_livro, id_testamento, nome, abrev) FROM 'c:/Biblia_JFARC/2_Livro_JFARC.csv' CSV HEADER; SELECT * FROM Livro; --linux COPY palavra (id_livro, capitulo, versiculo, texto) FROM '/home/postgres/Biblia_JFARC/3_Palavra_JFARC.csv' CSV HEADER; --windows COPY palavra (id_livro, capitulo, versiculo, texto) FROM 'c:/Biblia_JFARC/3_Palavra_JFARC.csv' CSV HEADER; SELECT * FROM Palavra;
Eu sinceramente creio que DEUS fala pela sua Palavra, a Bíblia, além da leitura tradicional, já tive diversas experiências usando um recurso o qual chamo de Consulta a Palavra, no qual oro a DEUS, clamando pelo sangue de JESUS, peço que fale comigo através da sua Palavra; fecho os olhos e logo em seguida abro a Biblia (Livro) apontanto para um versiculo, abro os olhos e leio.
Uma dessas experiências vou citar agora:
Certa vez fui acusado injustamente de roubo no meu trabalho e por relexo meu, perdi o documento que comprovava minha inocência, diante de tal situação fui pra casa, na eminência de perder o emprego e pior, ser acusado de ladrão, mas a primeira coisa que fiz foi pedir socorro a quem podia me socorrer, DEUS, e orei ao Senhor que me desse livramento, pois havia perdido o documento, que iria me inocentar.
Então falei com DEUS da seguinte forma:
Fala comigo DEUS, pelo sangue de Jesus a ti clamo, me dá um livramento dessa situação, pois de alguma forma estou errado, porque não vigiei e acabei perdendo esse documento, agora estou sendo acusado injustamente de roubo e estou na eminência de perder o emprego, depois abri a Bíblia e pedi uma palavra, e DEUS falou comigo, através do seguinte versículo da Bíblia:
havendo riscado a cédula que era contra nós nas suas ordenanças, a qual de alguma maneira nos era contrária, e a tirou do meio de nós, cravando-a na cruz.
CL 2:14
No dia seguinte o fornecedor, reconheceu o erro, enviou a sua documentação comprovando a minha inocência e corrigindo a situação, quitando o débito; o montante que teria que pagar caso não conseguir provar minha inocência, era de aprox. 20 vezes o meu salário; fui inocentado, e ainda trabalhei um bom tempo nessa empresa, e após 3 anos de desligado dessa empresa, já trabalhando em outra lugar, um amigo encontrou o tal documento que finalmente provou a minha inocência.
Concluindo essa experiência... posso dizer que DEUS realmente riscou a escrito de dívida, que de alguma forma era contra mim. DEUS É FIEL!
Muitas sãos as aflições do justo, mas o Senhor o livra de todas. Salmos 34:19
Usando esse mesmo conceito de Consulta a Palavra na Bíblia, no universo digital, usei uma função randômica (function) que traz um versículo da Bíblia, aleatoriamente em PL/pgSQL
-- -- Nome Artefato/Programa..: sp_palavra.sql -- Autor(es)...............: Emerson Hermann (emersonhermann@gmail.com) -- Data Inicio ............: 16/07/2009 -- Data Atual..............: 07/02/2011 as 18:50 -- Versao..................: 0.05 -- Compilador/Interpretador: PostgreSql/PLpgSQL -- Sistemas Operacionais...: Linux/Windows -- SGBD....................: PostgreSql 8.x/9.x -- Kernel..................: Nao informado! -- Finalidade..............: Store Procedure/Function Funcao de Consulta a Palavra, não é apenas uma -- ........................: caixinha de promessa, pois toda a Biblia Sagrada é usada para o mesmo -- OBS.....................: -- DROP FUNCTION IF EXISTS Palavra(); CREATE OR REPLACE FUNCTION Palavra() RETURNS TEXT AS $body$ SELECT p.texto || ' ' || rtrim(l.abrev) || ' ' || cast(p.capitulo AS text) || ':' || cast(p.versiculo AS text) AS "Consulta a Palavra - Clame pelo Sangue de Jesus!!!" FROM Palavra p JOIN Livro l ON l.id_livro = p.id_livro JOIN Testamento te ON te.id_testamento = l.id_testamento ORDER BY RANDOM() LIMIT 1 ; $body$ LANGUAGE 'sql'; COMMENT ON FUNCTION Palavra() IS 'Função de Consulta a Palavra (Bíblia Sagrada) não é apenas uma caixinha de promessa, pois toda a Bíblia Sagrada é usada para o mesmo'; SELECT * FROM Palavra();
A chamada dessa function em PL/pgSQL é:
SELECT * FROM Palavra();
Observações interessantes:
Os seguintes números são baseados na versão Nova Tradução na Linguagem de Hoje
Antigo Testamento | Novo Testamento | Total
Livros | 39 | 27 | 66
Capítulos | 929 | 260 | 1.189
Versículos | 23.146 | 7.957 | 31.103
Comparando com outras traduções, esses números podem ser um pouco diferentes:
A versão Almeida Revista e Atualizada, por exemplo, tem 31.104 versículos (o final de 1Samuel 20.42 se torna o versículo 43)
A versão Almeida Revista e Corrigida tem 31.105 versículos (além de 1Samuel 20, o final de Juízes 5.31 se torna o versículo 32).
A versão King James, por sua vez, tem 31.102 versículos, pois ajunta os versículos 14 e 15 de 3João.
Os textos originais em hebraico e grego, por sua vez, trazem um total de 31.171 versículos (21.213 no Antigo Testamento e 7.958 no Novo Testamento).
A maior diferença está no Livro de Salmos:
Vários deles trazem títulos que aparecem como o versículo 1 no texto hebraico e que, nas traduções, não são numerados.
Fonte: www.sbb.org.br
Este artigo usou a Versão Almeida Revista e Corrigida, porém com compatibilidade de versículos em quantidade com a versão King James, isto é, um total de 31102 versículos, conforme script abaixo:
-- Edição Almeida Revista e Corrigida select count(*) from Palavra; -- 31102 select 31105 - 31102; -- 3 select * from Livro; --o final de Juízes 5.31 se torna o versículo select * from Palavra where id_livro = 7 and capitulo= 5 and versiculo = 31; --o final de 1Samuel 20.42 se torna o versículo 43 select * from Palavra where id_livro = 9 and capitulo= 20 and versiculo = 42; --pois ajunta os versículos 14 e 15 de 3João select * from Palavra where id_livro = 64 and capitulo= 1 and versiculo = 14;
mas nós pregamos a Cristo crucificado, que é escândalo para os judeus e loucura para os gregos. 1CO 1:23
Que DEUS te abençõe sempre....
Muito bom Professor.
ResponderExcluirmas, como eu faço para instalar e exportar essa Bíblia para o Banco de Dados Firebird?
O Peregrino: A Bíblia do DBA http://t.co/ISFKfUb
Twitter http://twitter.com/#!/GilvanCosta2010
Olá Gilvan, desculpa a demora em responder, mas atualizei o artigo com scripts para Firebird e SQL Server da base de dados da Bíblia, espero que atenda. Para facilitar vc pode acessar esse link: https://docs.google.com/file/d/0B4jtNIW-NC15VDdIeVJuSTdRNGs/edit#
ExcluirEste comentário foi removido pelo autor.
ResponderExcluirApenas um Peregrino ... Jesus é o nosso referencial maior!
Excluir:)
Olá!
ResponderExcluirEste link não esta mais acessivel.
http://www.4shared.com/file/1hsF-Ex/Bíblia_JFARC.html
Tem algum outro lugar que eu consiga?
Atualizados os links
ExcluirHavia anteriormente hospedado o arquivo na 4shared, mas como na vida a única constante são as mudanças... agora hospedei no divshare no seguinte link:
ResponderExcluirhttp://www.divshare.com/download/16342750-000
Também atualizei o artigo, obrigado por ter informado.
Oi posso usar seu código?
ResponderExcluirSim
Excluirselect * from palavra where texto ilike '%de graça dai%';
ResponderExcluirde graça recebestes, de graça dai. Mateus 10:8 b
Mais do que uma aula de banco de dados. Uma aula de fé e cristandade. Está de parabens!!! Abraços e fique na paz !
ResponderExcluirQuem é o verdadeiro Professor é Jesus! :)
ExcluirOlá! Obrigado Peregrino, muito bom, parabéns! Qual tradução e versão desta bíblia?
ResponderExcluirJoão Ferreira de Almeida, Edição Revista e Corrigida.
ExcluirBom dia , o link do divshare não está mais funcionando, como posso baixar o arquivo cvs ? Abraço.
ResponderExcluirAtualizados os links
ExcluirPeço desculpas pela demora.
Tem como mandar o csv pro meu e-mail? tiagoantunesdocarmo@gmail.com. obrigado.
ResponderExcluirTem como mandar o csv pro meu e-mail? tiagoantunesdocarmo@gmail.com. obrigado.
ResponderExcluirMuito bom! Estou ainda não consegui o arquivo CSV. Mas é perfeito!
ResponderExcluir"Como estudioso da Bíblia e crente, entendo que o Autor da Bíblia está vivo, assim sempre que tenho alguma dúvida sobre sobre algum tópico deste livro consulto a Ele, o criador de todas as coisas, DEUS. "
ResponderExcluirAmém, irmão
Glória a Deus!
Excluirboa tarde. eu não sou programador. tentei abrir o csv com o libreoffice e estou com problema de acentuações. Qual seria o conjunto de caracteres e o idioma que eu deveria escolher
ResponderExcluirutf-8
Excluireu tenho um novo testamento que não é domínio público, e para uso pessoal, gostaria de criar um arquivo CSV para os versículos que anoto diariamente.
ResponderExcluir