OleDbType自动映射到Sql server数据类型和.Net类型

时间:2015-02-10 09:25:14

标签: sql-server mapping type-conversion foxpro

我使用OleDb打开Foxpro文件

Dim connection As New OleDbConnection(String.Format("Provider=VFPOLEDB.1;Data Source={0};", dbfPath))
connection.Open()
Dim tables As DataTable = connection.GetSchema(System.Data.OleDb.OleDbMetaDataCollectionNames.Tables)

然后我分析了FoxPro数据的结构

For Each rowTables As System.Data.DataRow In tables.Rows
   Dim columns As DataTable = connection.GetSchema(System.Data.OleDb.OleDbMetaDataCollectionNames.Columns, New [String]() {Nothing, Nothing, rowTables("table_name").ToString(), Nothing})
    For Each rowColumns As System.Data.DataRow In columns.Rows
        Console.Out.WriteLine(String.Format("{0};{1};{2};{3};{4};{5}", rowTables("table_name").ToString(), rowColumns("column_name").ToString(), rowColumns("data_type").ToString(), rowColumns("CHARACTER_MAXIMUM_LENGTH").ToString(), rowColumns("NUMERIC_PRECISION").ToString(), rowColumns("NUMERIC_SCALE").ToString()))
    Next
Next

现在我必须创建一个具有兼容结构的Sql server表,以便加载FoxPro数据(我将使用DataReader和SqlBulkCopy)。

我可以使用For Each中收集的信息来构建一个SQL脚本来创建表,但我想知道是否有一种更聪明的方式来自动映射Sql上的FoxPro数据类型服务器,避免实现此表的Select Case https://msdn.microsoft.com/en-us/library/ms130984.aspx 根据项目要求,我不能使用实体框架(我认为它不是加载数百万条记录的正确工具)。

1 个答案:

答案 0 :(得分:2)

如果您有VFP,这将是一次性升级过程,您是否从菜单工具 - >中查看了VFP?向导 - >大型化?

这将允许您定义与SQL Server的连接,然后选择要升迁到的数据库。选择桌子然后去。

如果你的表是“免费”表(与实际的数据库容器没有关联),我认为你仍然可以升级它们,但是我已经有一段时间了,因为我挖掘了这个过程,但如果这是你可以运行的大道。