gpt4 book ai didi

csv - 批量转换visual foxpro dbf表到csv

转载 作者:行者123 更新时间:2023-12-05 01:37:39 27 4
gpt4 key购买 nike

我有大量的可视化 foxpro dbf 文件,我想将它们转换为 csv。
(喜欢的可以download some of the data here。点击2011链接查看交易数据,准备等很久...)

我可以用 DBF View Plus 打开每张 table (一个很棒的免费软件实用程序),但是将它们导出到 csv 每个文件需要几个小时,而且我有几十个文件要处理。

是否有像 DBF View plus 这样的程序可以让我设置一批 dbf-to-csv 转换以在一夜之间运行?

/编辑:或者,是否有将 .dbf 文件直接导入 SQL Server 2008 的好方法?它们都应该进入 1 个表,因为每个文件只是来自同一个表的记录的一个子集,并且应该具有所有相同的列名。

最佳答案

在数组/列表中加载 FoxPro 文件列表,然后在每个文件上调用 ConvertDbf 将它们从 FoxPro 转换为 csv 文件。请参阅下面的 c# 控制台应用程序代码...

信用c# datatable to csv用于 DataTableToCSV 函数。

using System;
using System.Data;
using System.Data.OleDb;
using System.IO;
using System.Linq;
using System.Text;

namespace SO8843066
{
class Program
{
static void Main(string[] args)
{
string connectionString = @"Provider=VFPOLEDB.1;Data Source=C:\";
string dbfToConvert = @"C:\yourdbffile.dbf";
ConvertDbf(connectionString, dbfToConvert, dbfToConvert.Replace(".dbf", ".csv"));

Console.WriteLine("End of program execution");
Console.WriteLine("Press any key to end");
Console.ReadKey();
}

static void DataTableToCSV(DataTable dt, string csvFile)
{
StringBuilder sb = new StringBuilder();
var columnNames = dt.Columns.Cast<DataColumn>().Select(column => column.ColumnName).ToArray();
sb.AppendLine(string.Join(",", columnNames));
foreach (DataRow row in dt.Rows)
{
var fields = row.ItemArray.Select(field => field.ToString()).ToArray();
for (int i =0;i < fields.Length;i++)
{
sb.Append("\"" + fields[i].Trim() );
sb.Append((i != fields.Length - 1) ? "\"," : "\"");
}
sb.Append("\r\n");
}
File.WriteAllText(csvFile, sb.ToString());
}

static void ConvertDbf(string connectionString, string dbfFile, string csvFile)
{
string sqlSelect = string.Format("SELECT * FROM {0}", dbfFile);
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
using (OleDbDataAdapter da = new OleDbDataAdapter(sqlSelect, connection))
{
DataSet ds = new DataSet();
da.Fill(ds);
DataTableToCSV(ds.Tables[0], csvFile);
}
}
}
}
}

关于csv - 批量转换visual foxpro dbf表到csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8843066/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com