É uma maneira fácil de importar o conteúdo do arquivo .dbf para o MySQL no terminal

4

Eu tenho estes arquivos:

/referencias$ ls | grep .dbf
avenidas.dbf
barrios.dbf
borde.dbf
construcciones.dbf
espejo_de_agua.dbf
manchas_urbanas.dbf
manzanas.dbf
plazas.dbf

Eu quero fazer, mas no terminal. alguma ideia?

obrigado a roadmr : foi assim que eu fiz.

dbf2mysql -vv -q -h localhost -P my.password -U root avenidas.dbf -d avenidas -c

dbf-file: avenidas.dbf - dBASE III w/o memo file, MySQL-dbase: avenidas, MySQL-table: test
Number of records: 60
Name             Length Display  Type
-------------------------------------
NMBRE_COMP          150     0     C
TIPO                  4     0     C
CODIGO               16     0     N
LOAD DATA LOCAL INFILE '/tmp/d2myCO7f7O' REPLACE INTO table test fields terminated by ',' enclosed by ''''

depois disso verificado no MySQL.

# mysql -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 47
Server version: 5.1.58-1ubuntu1 (Ubuntu)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> USE avenidas;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> SHOW tables;
+--------------------+
| Tables_in_avenidas |
+--------------------+
| test               |
+--------------------+
1 row in set (0.01 sec)

mysql> DESCRIBE test;
+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| NMBRE_COMP | varchar(150) | NO   |     | NULL    |       |
| TIPO       | varchar(4)   | NO   |     | NULL    |       |
| CODIGO     | int(11)      | NO   |     | NULL    |       |
+------------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> \q
Bye
    
por maniat1k 02.11.2011 / 18:32

3 respostas

6

Eu encontrei um pacote "dbf2mysql":

  

Este programa pega um arquivo xBase e envia consultas para um servidor MySQL   para inseri-lo em uma tabela MySQL e vice-versa.

Eu não tentei por mim mesmo, mas parece que vai fazer o que você precisa. Para instalar (e desde que você parece ser útil com o terminal):

sudo apt-get install dbf2mysql

esta é a página de manual .

    
por roadmr 02.11.2011 / 19:30
1

Existe uma ferramenta dbf2mysql nos repositórios de software do Ubuntu. Eu nunca usei, mas a partir da descrição parece fazer o que você quer?

    
por JanC 02.11.2011 / 19:30
1

Uma observação importante é que, conforme indicado na página man :

  

mysql2dbf não pode gravar arquivos MEMO neste momento.

Outro dia, converti um arquivo usando dbf2mysql e achei que meus problemas com isso acabaram. Infelizmente, passei as 6 horas seguintes tentando resolver o problema de um dos meus maiores arquivos não ser escrito no MySQL.

Não houve erros, simplesmente não foi escrito. Eu passei por uma infinidade de etapas, incluindo alterar o tamanho do buffer, etc ... sem sucesso, antes de perceber que era um arquivo MEMO.

Eu sou novo em tudo isso, então, para ajudar outros novatos, deixarei você informado sobre o segredo. A única maneira de saber que você está lidando com um arquivo MEMO, como produzido pelo Visual FoxPro (até onde eu sei, de qualquer forma) é que ele tem 3 arquivos complementares terminando com .cdx (todos eles têm), .dbt e .fpt .

  • .dbf = O arquivo do banco de dados que você está tentando converter, é claro.
  • .cdx = Um tipo de arquivo de índice composto.
  • .dbt = Contém o texto MEMO em si, mas não pode ser aberto com um editor de texto.
  • .fpt = Contém o registro do cabeçalho MEMO.

Tive a sorte de ter um com apenas dois dos três arquivos complementares, .fpt e .cdx ... que DID converteram. Assim, através do processo de eliminação, é o arquivo .fpt , ou registro de cabeçalho MEMO, que é o arquivo problemático. Simplesmente mover esse arquivo para fora do diretório não funciona, infelizmente.

Tenho certeza que há uma maneira de contornar isso, infelizmente eu não sei qual ainda. No entanto, quando (e eu quero dizer 'quando') eu resolver isso, vou postar aqui.

    
por Platoxia 22.01.2012 / 03:55