我使用FireDAC在Delphi中使用ODBC连接.dbf。我使用32位Driver do Microsoft dBase (.dbf)
驱动程序设置了ODBC连接dBase 5.0。
在我的IDE(Rad Studio 10.1 Berlin)中,我已将ODBC连接设置为数据源。 ODBCAdvanced
connectiong字符串为DefaultDir=%s;DriverId=533;MaxBufferSize=2048;PageTimeout=5
,其中%s
是正确的目录。
我设法使用TFields将表格的结构复制到SQLite数据库(代码大致如下)。
FieldNames := TStringList.Create;
PDOXTable.GetFieldNames(FieldNames);
FieldNames.Delimiter := ';';
FieldList := TList<TField>.Create;
PDOXTable.GetFieldList(FieldList, FieldNames.DelimitedText);
TempTable := TFDTable.Create(nil);
TempTable.Connection := TempConn;
TempTable.TableName := DataTable.TableName;
for I := 0 to FieldList.Count - 1 do TempTable.Fields.Add(FieldList.Items[I]);
TempTable.CreateTable(true, [tpTable, tpTriggers, tpIndexes]);
但是,数据类型不同,我没有主键,没有条件,或者没有&#39; dflt_value&#39;当我使用名为Exportizer(http://www.vlsoftware.net/exportizer/)的应用程序手动导出这些相同的表时,我得到了这个,虽然它有一个命令行客户端,但我不确定我是否能够捆绑我的申请。
在保存尽可能多的数据类型和参数的同时,将表从paradox .dbf复制到SQLite的合理方法是什么?
答案 0 :(得分:0)
使用TFDBatchMove。 SQLite是无类型的,但FireDAC有自己的pseudo data type mapping,您可以使用它来保存原始数据类型。如果数据类型完全不符合您的意愿,您可以定义自定义Mappings。