Importar banco de dados?

  • Identifique-se para criar novos tópicos neste fórum
  • Visitantes anônimos não podem postar neste fórum
mausirius  Iniciante   Postagens: 20

salve galera,

To quebrando a cabeça aqui com um problema.
Eu estou usando o módulo addresses em um site, ele funciona perfeitamente, sem problemas ou erros.

O que acontece é o seguinte: Tenho um lista de 1.000 endereços que quero inserir no banco de dados, mas fazer isso manualmente, um a um, não me agrada.
Tentei de várias maneiras inserir os endereços via import no myphpadmin e tentei também usando o programa DB Designer 4, consigo colocar a entradas, elas aparecem no banco de dados, mas o portal não consegue abri-las... quandoo acesso um endereços os campos ficam vazios... tento edita-los via portal e recebo a informação de erro 0013 ( erro de sintaxe de sql próximo a linha 1 )


Qual é o procedimento correto para importar os 1000 endereços de uma só sem detonar o funcionamento do banco de dados.

Para quem quiser ver o módulo addresses veja aqui

No mais é isso.
Valeu

FrodoBR  Iniciante   Postagens: 1

I aí mausirius tudo bem, vamo ver se consigo ajudar.

Neste portal que você já tem ele instalado faiz o seguinte.

- gera um backup destas tabelas via phpmyadmin e faz download para sua manica.

- Abre este backup em algum editor de texto.
- Pegue estes seus endereços e inclua todos no mesmo lay-out. Cuidado que tem um campo que deve ser o código da chave primária e ele precisa ser sequencial e continuar do número que você baixou.
- Depois de incluir tudo neste arquivo, salve ele com a extensão sql se é que já não esta assim.
- Tente enviar para o seu portal via phpmyadmin agora.
- Se ele for muito grandão, quebre em algumas partes de 200 a 300 linhas que vai funcionaire, eu já fiz isto assim e deu certo.

Cuidado se estiver usando versões recentes do mysql que o bicho pega se não colocar entre aspas os caracteres se não me engano.

Nossa já ia esquecendo de avisar para fazer um backup de todas as suas tabelas antes de entrar neste turbilhão XOOPS

Qualquer coisa vai mandando aí e tentaremos ajudar.

Espero que tenha servido as paradinhas

Daniel Almeida  Iniciante   Postagens: 0

também passei por um problema semelhante com o mesmo módulo Addresses... tinha que importar 280 endereços de cartórios para o portal cecaf.com.br

O detalhe de jogar os dados direto na base de dados é que são duas tabelas que trabalham os dados:

- XXX_addresses_links.
- XXX_addresses_text.

Se você só preencher a primeira, o portal não exibe.

A segunda tabela é bem simples, porque só contém o lid que identifica qual o endereço, e um campo de texto para uma descrição do endereço.

Eu apenas criei um código MySQL que preenchia a segunda tabela com textos vazios nos lid's dos endereços que eu tinha cadastrado, e deu tudo certo!

mausirius  Iniciante   Postagens: 20

Salve, salve.

Frodobr... valeu as dicas eu mais ou menos já entendi esse processo.
Como eu faço para dividir as linhas da tabela? Tem algum procedimento para isso.

Triwaca... entendi eu estava desconfiando de havia outra tabela relacionada. para o os resultados eram parciais... parecia que faltava um empurrãozinho...rs.
Eu sou um fuçador nato e não um programador... como seria esse códio mysql para preencher a tabela. Estas coisa são um tanto grego para mim. e como eu faço para rodar esse código, preciso de algum programa ou via Microsoft Windows mesmo funciona?

Valeu a ajuda de todos...

Daniel Almeida  Iniciante   Postagens: 0

Acho que isso aqui vai ajudar a outras pessoas também a importarem dados para outros módulos. Então não vou ser totalmente específico em um passo a passo, e sim dar a ideia geral de como importar dados de locais diferentes (excell para XOOPS, por exemplo).

No caso aqui o problema é o seguinte: Temos uma tabela do excell com uma listagem de locais, com as colunas NOME, ENDEREÇO, TELEFONE, CIDADE, BAIRRO, etc. Temos que importar esses dados para dentro do XOOPS, no módulo Addresses (endereços). Como fazer?

Obviamente que não queremos digitar um por um! Então vamos a obra:

- Primeiro vamos dar uma olhada como os dados são gravados no MySQL. Acesso a minha base de dados via phpMyAdmin (veja como fazer isso com seu provedor) e lá eu procuro a tabela do addresses que grava os endereços: xxx_adresses_links. Clicando nela eu vejo como os dados são gravados:

lid(número de índice da tabela) - cid(número da categoria) - title(nome) - URL - adress - zip - city - phone - ... - submiter - status - date -...

- Vemos que nessa tabela temos todos os campos que compôem um endereço. O que você tem que fazer agora é mover ou criar os campos de seu arquivo do Excell para que fiquem na mesma posição do MySQL. NO excell, você pode então criar uma coluna que será a categoria, e mover a coluna endereço para que seja a quarta coluna, etc. Não posso entrar em detalhes aqui, porque o que importa é criar uma tabela que tenha exatamente as mesmas colunas da tabela addresses_links do MySQL.

Observações:
- O primeiro campo LID não precisa estar no excell, porque o MySQL cria esse campo automaticamente.
- Os campos submitter e status devem estar com o valor 1.
- O campo date tem que ter uma data válida tipo PHP. Na dúvida, preencha com 1139672985.
- OUtros campos podem estar vazios ou com o valor 0 (caso sejam números).
- A coluna CID indica qual categoria o endereço pertence. Se você quiser organizar bem seus endereços, deverá preencher esse campo com o número correspondente. Ex: nos meus endereços, CID 1 são amigos, CID 2 são colegas de trabalho, e CID 3 são locais. Eu terei que preencher manualmente esses dados para que eles sejam mostrados nas categorias no portal.

- Agora com a tabela pronta, vá em Salvar como... e escolha o formato CSV(separado por vírgulas). Nas mensagens de aviso, simplesmente clique em OK e SIM.

- Se você abrir agora o arquivo CSV que você criou, terá todas as informações separadas por ; (ponto e vírgula). O que vamos fazer agora é transformar esse arquivo em um arquivo de comandos SQL.

- Os comandos SQL são instruções que quando executados no phpMyAdmin, executam instruções na base de dados. Se colocarmos instruções INCLUDE no começo de cada linha desse arquivo que criamos, essas informações serão colocadas na nossa base de dados facilmente!

- Vamos ver como fazer isso:

INSERT INTO `ellery2_addresses_links` ( `lid` , `cid` , `title` , `url` , `adress` , `zip` , `city` , `country` , `phone` , `mobile` , `fax` , `contemail` , `opentime` , `logourl` , `submitter` , `status` , `date` , `hits` , `rating` , `votes` , `comments` )
VALUES (
'', '1', 'teste', '', 'gdgdsg', '60000', 'ggg', '', '', '', '', '', 'gsdgs', '', '1', '1', '1139672985', '0', '0.0000', '0', '0'
);


O comando acima mostra como colocar um endereço teste no Addresses, na tabela ellery2_addresses_links. O que temos que fazer é (usando um editor de textos bom, com os comandos localizar e substituir) pegar nossso arquivo CSV e transformar na marra em um SQL!

Primeiro eu substituiria todos os ; por ', ' . Para isso basta utilizar o Localizar e Substiruir do seu editor de texto.

Depois eu incluiria o texto INSERT INTO `?_addresses_links` ( `lid` , `cid` , `title` , `url` , `adress` , `zip` , `city` , `country` , `phone` , `mobile` , `fax` , `contemail` , `opentime` , `logourl` , `submitter` , `status` , `date` , `hits` , `rating` , `votes` , `comments` )
VALUES (
em todos os começos de linha. O esquema é ir no (CTRL+V) (seta baixo) (HOME). Se você tem um arquivo com mais de 100 linhas, pode arranjar um programa que fique repetindo essa sequência de teclas automaticamente para você, até acabar as linhas.

Observação: Substitua nesse texto a ser incluido as interrogações (?) pelo nome que se encontra na sua base de dados.

Por final, basta incluir nos finais da linha o texto ); no esquema (END) (CTRL+V) (seta baixo). de novo para poupar seu tempo, use um programa que repita essa sequência de teclas para você.

- No final, você terá um arquivo grandão com vários códigos SQL que irão colocar os dados que você quer bem dieitinho na sua base de dados. MAS ATENÇÃO: Verifique se não há erros nos finais da linha e no final do documento. Todas as linhas tem que parecer semelhantes. Aqui não dá para prever muito o que pode dar errado. Na dúvida, verifique a linha de exemplo lá em cima de como é um comando SQL e compare com as linhas que você criou nesse processo de substituições e inclusões.

- Agora salve seu arquivo com a extensão SQL. Depois no phpMyAdmin, acesse a tabela ?_addresses_links e clique no endereço SQL. Será aberto uma área onde você pode digitar um comando SQL para trabalhar sua base. Logo abaixo há uma opção de abrir o arquivo texto SQL. Clique em Arquivo... e selecione o seu arquivo SQL criado. Na parte Compressão, deixe o Auto-detectar. Depois mande executar.

- Se houver algum erro, o SQL irá avisar. Se você fizer bagunça na sua tabela, o esquema é remover os dados que você criou, revisar o arquivo SQL, e tentar de novo até tudo sair ok!

- O último passo é preencher a tabela ?_addresses_text. Essa tabela contem um campo adicional para incluir um texto complementar para cada endereço. Os endereços só são exibidos no portal se essa tabela for preenchida. O esquema é verificar a seuquência LID dos seus endereços que foram preenchidos (tipo: foram preenchidos os LIDs de 1 até 543) e preencher esses mesmos LIDs nessa tabela com qualquer texto. Abaixo temos um comando SQL que preenche 1 lid.

INSERT INTO `ellery2_addresses_text` ( `lid` , `description` ) VALUES ( '10', '...' );

Esse comando acima preenche o LID 10 com o texto "...". COm isso o endereço 10 será exibido no portal. A ideia é criar um arquivo SQL com várias linhas dessas (mudando só o nº LID) para preencher todos os LIDs criados pela importação que você fez do XLS para o XOOPS. Dá para se automatizar a criação desse arquivo usando o Excell.

FIM!

Difícil? E quem falou que seria fácil! Eu mesmo demorei 1 dia inteiro para importar uns dados de uma tabela XLS para o addresses. Mas foi muito mais desafiador e fácil do que digitar tudo um a um de novo!

Daniel Almeida  Iniciante   Postagens: 0

O programa que usei para evitar o trabalho de corno de ficar colando as linhas foi esse: http://aldostools.com/macro.html

É shareware, mas funciona beleza!

mausirius  Iniciante   Postagens: 20

Salve, salve.

Triwaca... funcionou. E realmente com essa explicação deu para entender de maneira geral como funciona a operação de inserir no banco de dados.

Uma dica que eu deixo aqui, é você colocar um endereço pelo phpmyadmin usando o Insere. preencha os campos e clique em executar, vai aparecer na próxima tela a linha de comando no esquema que o triwaca mostrou no outro post, seleciona ela, copie e depois cole no bloco de notas.

Quando você for lapidar o csv do excel no bloco de notas por exemplo, você segue o esquema que veio do phpmyadmin. Assim você já vai comparando os dois, porque na edição do csv do excel para sql com a adição do comando INSERT INTO a disposição dos dados e o que foi usado, se foi aspas duplas(") ou aspas simples('), o espaçamento dos campos, tudo tem que ficar com a mesma aparência do que veio do portal.

No mais é isso ai...

mausirius  Iniciante   Postagens: 20

Bem eu de novo com boas noticias.

Descobri um jeito de fazer o import sem ter que inserir os comandos do sql. Apenas formatando os dados do csv do excel.

Dentro phpmyadmin você abre o banco de dados que você quer trabalhar e depois clica na tabela para onde você quer importar os dados ... quando a tabela abrir você clica em "SQL" e abre a tela para fazer procura e também enviar arquivos.

No rodapé da página está um endereço "insere arquivo texto na tabela". É por aí que temos que enviar os dados csv. Mas para isso ele tem estar formatado da maneira correta.

Veja abaixo:

Esse aqui é o exemplo de uma linha gerada no arquivo csv exportado pelo phpmyadmin -

"1";"1";"nononon";"nonon.com.br";"Rua nononon, 25";"11660-000";"Caraguatatuba";"Brasil";"(12) 0000 1111";"(12) 8222-1222";"12";"email";"Web Design";"a";"1";"1";"1139672985";"2";"0.0000";"0";"0"


E este aqui é o exemplo da mesma linha gerada no arquivo csv exportado pelo excel -

1;1;nonono;nonon.com.br;Rua nonon, 25;11660-000;Caraguatatuba;Brasil;(12) 0000 1111;(12) 8222-1222;12;email;Web Design;0;1;1;1156275613;2;0.0000;0;0


A diferença é a falta da aspas " em todos os campo no começo e no fim do texto. Faça a edição em um editor de texto que localize e substitua e troque o ( ; ) por ( ";" ). acrescente uma aspa no começo e no fim de cada linha.

O lance é deixar o csv do excel igualzinho ao que o phpmyadmin gera. Ai é so salvar como csv e utilizar o endereço "insere arquivo texto na tabela" no sql do phpmyadmin. na página da próxima tela insira o arquivo no local indicado. Eu não alterei as configurações. e foi tudo bem.

Lembrem-se... são duas tabelas para serem editadas:
Xxx_addresses_links e xxx_addresses_text.

Confiram os posts anteriores que existem informções importantes lá.

é isso ai...cor

FrodoBR  Iniciante   Postagens: 1

Caramba que aula, joia mesmo

  Pesquisa avançada






Entrada

Codinome:


Senha:





Perdeu a senha?  |Cadastre-se!


Quem nos visita
Há 32 visitantes neste momento... (19 na seção Fóruns)

Associados: 0
Anônimos: 32

outros...

Banner XOOPS Cube