我们有一个创建许多 Visual Foxpro (DBF) 表的应用程序。每个表都有不同的架构,但它们都包含一个已知的日期字段。
我被要求创建另一个应用程序(在 C# 中),它将上周的数据从每个表复制到一个新表(在与源表不同的文件夹中)。不同的表将保留(例如,如果有三个源表,则将有三个目标表)。
随着时间的推移,表可能会发生变化(例如添加新字段),因此我无法对表结构做出假设(除了上述日期字段的存在)。
从一个表中获取数据并创建具有相同结构的新表的最简单/最佳方法是什么?
我知道如何查询表以提取数据(例如,用上周的记录填充数据集)。但是,我认为必须有一种更好的方法来创建新表并用结果填充它,而不是手动解析架构中的所有字段信息并使用它来重新创建目标表。
使用 FoxPro 似乎与 SQL Server 不同,每次都让我头疼,所以我需要一些关于我的方法的指导。
生产机器上安装了 VFP 9 OLEDB 驱动程序。如果可能的话,我们不希望安装太多其他东西。
要获取数据、表和记录的精确副本,您可以通过单个 SQL-Select 来完成
OleDbConnection oConn = new OleDbConnection("Provider=VFPOLEDB.1;Data Source=C:\\SomePath");
OleDbCommand oCmd = new OleDbCommand();
oCmd.Connection = oConn;
oCmd.Connection.Open();
oCmd.CommandText = "select * from SomeTable where someCondition into table YourNewTable";
oCmd.ExecuteNonQuery();
oConn.Close();
你的 where 子句几乎可以是任何东西,并且 Into TABLE 子句告诉 VFP 引擎将结果集创建为新表,因此无需显式声明类型、列等,从一个查询数据并将数据推入另一个表......
需要考虑的一个问题...验证用户访问权限,以便在您尝试创建新表的任何位置显然能够创建、读取、写入。如果需要,您甚至可以指定完全限定的路径,例如 C:\SomeOtherPath\Monthly\MyTable1...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)