通过ODBC将Paradox DB中的数据类型转换为SQLite [Delphi]

时间:2017-02-23 19:57:48

标签: sqlite delphi paradox

我使用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/)的应用程序手动导出这些相同的表时,我得到了这个,虽然它有一个命令行客户端,但我不确定我是否能够捆绑我的申请。

Comparing results of exporting to SQLite-from-Paradox-.dbf using Exportizer and code I wrote.

在保存尽可能多的数据类型和参数的同时,将表从paradox .dbf复制到SQLite的合理方法是什么?

1 个答案:

答案 0 :(得分:0)

使用TFDBatchMove。 SQLite是无类型的,但FireDAC有自己的pseudo data type mapping,您可以使用它来保存原始数据类型。如果数据类型完全不符合您的意愿,您可以定义自定义Mappings