快速读取csv平面文件,并导入数据库,简单小工具

时间:2023-03-09 16:27:09
快速读取csv平面文件,并导入数据库,简单小工具
using DataToDeal;
using LumenWorks.Framework.IO.Csv;
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes; namespace CSVReaderFast
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.Loaded += MainWindow_Loaded;
}
DataTable dt = null; //update VEYear set DescriptionChinese=replace(DescriptionChinese,'?','')
public string str = "Data Source=.;Initial Catalog=RBVehicle;User ID=sa;Password=xwl;Max Pool Size = 512";
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
//简单对应数据库表名,其实完全可以数据库获取
string[] tableNamelist = { "RBAutoCalc", "RBRegAdjustments", "RBRegions", "RBStdEquip", "RBVehicle", "VEFamily", "VEMake", "VEYear" };
foreach (var item in tableNamelist)
{
this.cbx1.Items.Add(item);
}
}
//打开csv文件
private void Button_Click_1(object sender, RoutedEventArgs e)
{
dt = new DataTable(); OpenFileDialog window = new OpenFileDialog();
window.FileName = "文件";
window.DefaultExt = "*.*";
window.Filter = "CSV文件|*.CSV";
Nullable<bool> result = window.ShowDialog();
if (result == true)
{
string fileName = window.FileName;
using (CsvReader csv =
new CsvReader(new StreamReader(fileName), true))
{
//字段数量
int fieldCount = csv.FieldCount;
//标题数组
string[] headers = csv.GetFieldHeaders();
//创建列名称
for (int i = ; i < headers.Count(); i++)
{
DataColumn dc = new DataColumn(headers[i]);
dt.Columns.Add(dc);
}
//只进的游标读取
while (csv.ReadNextRecord())
{
DataRow dr = dt.NewRow();
for (int j = ; j < fieldCount; j++)
{
dr[j] = csv[j];
}
dt.Rows.Add(dr);
}
if (dt.Rows.Count > )
{
this.DataGrid1.ItemsSource = dt.DefaultView;
this.labe1.Content = "共" + dt.Rows.Count + "条";
}
}
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
if (this.cbx1.SelectedIndex != -)
{
if (dt != null && dt.Rows.Count > )
{
string TableName = this.cbx1.SelectedItem.ToString(); string returnvalue = new HelpFile().SqlBulkCopyData(TableName, dt, str);
if (returnvalue.Contains('@'))
{
MessageBox.Show("导入异常:" + returnvalue.Split('@').Last());
}
MessageBox.Show("导入成功!");
lable1.Content = returnvalue;
}
else
{
MessageBox.Show("没有数据可导入,请先加载数据!");
} }
}
}
}