我有大量的视觉foxpro dbf文件,我想转换为csv.(如果您愿意,可以在此处下载部分数据.点击2011年的交易数据链接,准备等待很长时间......)
我可以使用DBF View Plus(一个非常棒的免费软件实用程序)打开每个表,但是将它们导出到csv每个文件需要几个小时,我有几十个文件可以使用.
是否有像DBF View plus这样的程序可以让我设置一批dbf-to-csv转换来在一夜之间运行?
/编辑:或者,是否有一种将.dbf文件直接导入SQL Server 2008的好方法?它们都应该进入1个表,因为每个文件只是来自同一个表的记录的子集,并且应该具有所有相同的列名.
我必须将.DBF和.FPT文件从Visual FoxPro转换为MySQL.现在我的脚本适用于.DBF文件,它打开并使用dbase_open()和dbase_get_record_with_names()读取它们,然后执行MySQL INSERT命令.
但是,这些.DBF文件的某些字段属于MEMO类型,因此存储在以.FPT结尾的单独文件中.我该如何阅读此文件?
我在MSDN中找到了这个文件类型的规范,但我不知道如何用PHP按字节顺序读取这个文件(另外,我更喜欢简化的解决方案).
有任何想法吗?
我在这里使用.dbf文件有问题.我可以进行CRUD操作,但是当我尝试使用事务时,我得到一个例外.我这样做:
public void AddRolesToUser(string user, string[] roles)
{
using (OdbcConnection connection = new OdbcConnection(ConnectionString))
{
OdbcCommand command = new OdbcCommand();
OdbcTransaction transaction = null;
command.Connection = connection;
try
{
connection.Open();
transaction = connection.BeginTransaction();
command.Connection = connection;
command.Transaction = transaction;
command.CommandText = "Delete From Roles Where User='" + user + "'";
command.ExecuteNonQuery();
if (roles != null)
{
foreach (string role in roles)
{
command.CommandText = "Insert Into Roles(User, Role) Values('" + user + "', '" + role + "')";
command.ExecuteNonQuery();
} …Run Code Online (Sandbox Code Playgroud) 我需要接收 DBF 格式的输入文件(我相信它是通过 Foxpro 制作的)并按顺序读取记录进行处理。
有没有什么方法可以在 Java 中做到这一点而不使用外部库?
谢谢。
(我只是尽可能避免使用外部库,因为我仍然需要获得批准)
我找到了一个旧的 dbase 数据库。每个“表”有3个同名但扩展名不同的文件。
例子:
为什么这些不同。我可以轻松打开和使用 .dft 文件。我可以忽略其他的吗?或者我会因此丢失任何数据吗?
我想从我的.net应用程序更新.dbf文件.我能够将.dbf文件读入网格,但无法从我的.net应用程序更新.dbf文件.
我使用以下代码来读取.dbf文件.读书还可以.但是,无法更新.dbf文件.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data.Odbc;
namespace DBFwin
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void ConnectToDBF()
{
System.Data.Odbc.OdbcConnection oConn = new System.Data.Odbc.OdbcConnection();
oConn.ConnectionString = @"Driver={Microsoft dBase Driver (*.dbf)};SourceType=DBF;SourceDB=D:\databases\;Exclusive=No; Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;";
oConn.Open();
System.Data.Odbc.OdbcCommand oCmd = oConn.CreateCommand();
//Test.DBF is the dbf file which is located at C:\rd\Setup folder.
oCmd.CommandText = @"SELECT * FROM C:\rd\Setup\Test.DBF";
DataTable dt = new DataTable();
dt.Load(oCmd.ExecuteReader());
//Adding …Run Code Online (Sandbox Code Playgroud) 我使用以下代码将dbf/mdx文件从一个文件夹复制到另一个文件夹:
procedure TfrmMain.MyCopyFile(S1, S2: string);
begin
if not FileExists(S2) then
CopyFile(PCHAR(S1), PCHAR(S2), true)
else
if Application.MessageBox(PCHAR('Overwrite existing file ' + S2 + '?'), 'File exists in folder',MB_YESNO + MB_DEFBUTTON1) = IDYES
then CopyFile(PCHAR(S1), PCHAR(S2), false)
end;
Run Code Online (Sandbox Code Playgroud)
当表名保持不变时,代码工作正常.
如果我更改表的名称:
MyCopyFile(CurPath + '\orders.dbf', NewPath + '\ordly.dbf');
MyCopyFile(CurPath + '\orders.mdx', NewPath + '\ordly.mdx');
Run Code Online (Sandbox Code Playgroud)
当我尝试打开ordly.dbf时收到错误消息:
损坏的表/索引标题.
文件:C:\ DATA\2011\ORDLY.MDX
我有许多 DBF 数据库文件,我想将它们转换为 CSV。有没有办法在 Linux 或 PHP 中做到这一点?
我找到了几种转换 DBF 的方法,但它们非常慢。
我正在尝试在用户选择网络名时显示用户图像,但是当我尝试查找他们的图像时,我会收到一条错误消息,例如;
Could not find file 'S:\Picture\Chris .jpg'.
Run Code Online (Sandbox Code Playgroud)
你可以告诉你有很多空格,所以我尝试了这个,其中每个空格都将在netname中用"a"替换;
string dbfQuery = "SELECT em_pplid, em_name, STRTRAN(em_netname, ' ', 'a'), em_surname FROM employs WHERE em_netname NOT LIKE ''";
Run Code Online (Sandbox Code Playgroud)
当然,我开始收到类似的新错误消息;
Could not find file 'S:\Picture\Chrisaaaaaaaaaaaaaaa.jpg'.
Run Code Online (Sandbox Code Playgroud)
您会立即认为更改STRTRAN(em_netname, ' ', 'a')为STRTRAN(em_netname, ' ', '')将删除所有空格.虽然这在一定程度上起作用,但首先如果有一个以上的克里斯,例如"ChrisB"和"ChrisC",他们现在都变成了"克里斯".
为了增加这一点,一些空格不会被删除,例如我仍然会收到错误说;
Could not find file 'S:\Picture\YenT .jpg'.
Run Code Online (Sandbox Code Playgroud)
即在某些情况下仍然留有一个空间.
这有什么理由吗?我是否正确使用STRTRAN?我认为可能的一件事是,除了空格之外还有其他隐藏的,不可打印的字符,但不会用"a"替换它们留下空间?
我在C#中做一个程序,我试图在DBF文件中执行一个查询,我认为没问题,但DataReader的HasRows属性值为false.我认为问题在于日期.这是我的代码:
string Con = @"Provider=VFPOLEDB.1;Data Source=\\Server\ges_01";
OleDbConnection ConnectionHandler = new OleDbConnection(Con);
ConnectionHandler.Open();
string SQL = "SELECT codalb FROM BALBARA WHERE FECALB BETWEEN CTOD('2015/12/07') AND CTOD('2015/12/13') AND CODCLI LIKE '%9' ORDER BY CODALB"
OleDbCommand Query = new OleDbCommand(SQL, ConnectionHandler);
OleDbDataReader datareader = Query.ExecuteReader();
while(datareader.Read())
{}
Run Code Online (Sandbox Code Playgroud)
我知道其余的都可以,因为如果把string SQL="select codalb from balbara";工作正常.
任何人都可以说我做错了什么