是在终端中将 .dbf 文件内容导入 MySQL 的简单方法

是在终端中将 .dbf 文件内容导入 MySQL 的简单方法

我有这个文件:

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

我想在终端上做。有什么想法吗?

谢谢路先生:我就是这样做的。

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 ''''

之后检查 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

答案1

我找到了一个“dbf2mysql”包:

该程序获取 xBase 文件并向 MySQL 服务器发送查询以将其插入 MySQL 表,反之亦然。

我自己还没有尝试过,但它看起来能满足你的需要。要安装(因为你似乎很擅长使用终端):

sudo apt-get install dbf2mysql

这是手册页

答案2

dbf2mysqlUbuntu 软件库中有一个工具。我从未使用过它,但从描述来看,它似乎可以做你想要的事情?

答案3

需要注意的一件重要事情是,如页面所述man

mysql2dbf 目前无法写入 MEMO 文件。

前几天,我使用 转换了一个文件dbf2mysql,以为我的问题已经解决了。不幸的是,我又花了 6 个小时试图解决我最大的文件之一无法写入 MySQL 的问题。

根本没有任何错误抛出,只是无法写入。我尝试了很多步骤,包括更改缓冲区大小等……但都无济于事,直到我意识到这是一个 MEMO 文件。

我对这一切都不熟悉,所以为了帮助其他新手,我将向您透露这个秘密。要知道您正在处理的是 MEMO 文件(由 Visual FoxPro 生成,至少据我所知),唯一的方法是它有 3 个以 结尾的配套文件.cdx(它们都有)、.dbt.fpt

  • .dbf= 当然是您要转换的数据库文件。
  • .cdx= 一种复合索引文件。
  • .dbt= 包含 MEMO 文本本身,但无法用文本编辑器打开。
  • .fpt= 包含 MEMO 头记录。

我很幸运,我的一个文件只有 3 个配套文件中的 2 个,.fpt而且.cdx……确实转换了。因此,通过排除法,可以确定是文件.fpt或 MEMO 头记录有问题。遗憾的是,简单地将该文件移出目录是行不通的。

我确信有办法解决这个问题,但不幸的是我还不知道是哪种方法。不过,当我解决这个问题时(我的意思是“当”),我会在这里发布它。

相关内容