从本地计算机上的dbf文件继续将数据导入MySQL的最简单方法

时间:2013-12-05 08:48:51

标签: mysql sql import dbf

我有一个问题一直困扰着我很久以前和几天前我开始谷歌搜索解决方案,但我还没有真正的工作。我已经阅读了一些关于SSIS的内容,但我不确定它是否正在寻找我正在寻找的内容,或者我还有其他什么需要研究以实现我的目标。这是我的问题:

我的会计程序生成并更新.dbf文件,其中包含有关所有凭证的信息,并将其放在本地计算机上的文件夹中。我们的MySQL必须不断更新这些信息。所以这就是我每天做两次的事情:

  • 我在excel中打开.dbf文件
  • 将其另存为.csv。
  • 关闭Excel
  • 在记事本++中打开文件
  • 将格式转换为utf8
  • 保存
  • 登录MySQL
  • 转到右边的表格
  • 上传.csv
  • 用新的
  • 替换旧数据

由于这需要相当多的时间,我觉得必须有更好的方法来做到这一点。如果我可以将这个计划自动完成或者如果有某种SQL查询可以做到这一点,那将是很好的,因为那时我可以使用PHP创建一个我可以输入的网站,并在我运行查询时运行按一下按钮等。

所以我的问题是:将.dbf文件中的信息连续获取到SQL服务器的最简单方法是什么?

2 个答案:

答案 0 :(得分:1)

有一种方法可以通过DBF Commander Pro的命令行界面完成工作。在* .BAT文件中使用以下命令:

dbfcommander.exe -edb <dbf_file_name> <server_table_name> <connection_string>

之后,使用Windows Sheduler为此BAT文件创建一个shedule。 唯一的问题仍然是,您需要在导出过程之前清除MySQL数据库上的目标表。

要在应用GUI中尝试导出过程,请点击'文件 - &gt;导出到DBMS'。在窗口中单击Build按钮以构建连接字符串:选择MS OLEDB Provider for MySQL Server,然后从列表中选择您的服务器,提供登录名和密码,选择一个数据库,单击OK: enter image description here

在“导出到DBMS”窗口中,选择要将源DBF文件导入到的目标表,然后单击“导出”。您需要的命令行可以在窗口的底部找到。

有关导入和导出DBF到数据库的更多信息,您可以找到here。命令行的详细使用是here

答案 1 :(得分:1)

正如您提到的在PHP中做的那样。什么阻止你在那里做。

您可以使用VFPOleDB提供程序创建一个连接句柄,以打开表的路径位置,打开并读取表。然后打开与MySQL数据库的SECOND连接,准备将数据推送到那里。

然后,对于从VFP OleDB连接结果集中读取的每一行,执行您需要的任何特殊清理。

然后,从MySQL连接查询是否有现有条目,如果需要添加或更新,则分别发送数据。

继续从VFP结果集中获取其余记录。

无需在Excel中打开,保存为CSV格式,加载其他工具等...