Txt文件转成Access Table
txt文件存有28万条记录,欲将其导入Access数据库中,却又规定不能使用Access DTS工具。一开始想一条一条的导入到数据库表中,然而最后实现下来发现耗时太多,一个文件导下来需要10分钟左右,实在受不了。这时就想有没有办法可以批量的将记录写到表中,在网上收了很多方法,都不行,最后收一个老兄ADO代码的启示,终于解决。不过还是不完美,这个方法需要增加一个配置文件。然而目前还没找到更好的方法,只好先记录下来,期待后面更好的方法。
txt文件用“~”作为分格符。
其中增加的配置文件名为Schema.ini。txt文件名命名为A.txt。
Schema.ini如下:
1
[A.txt]
2
ColNameHeader=false
3
Format=Delimited(~)
4
MaxScanRows=0
5
CharacterSet=ANSI
6
Col1="FirtCol" Text Width 2
7
Col2="SecondCol" Char Width 20
8
Col3="ThreeCol" Char Width 20
9
Col4="FourCol" Double
10
Col5="FiveCol" Double
11
Col6="SixCol" Double
12
Col7="SevenCol" Double
13
Col8="EightCol" Double
14
Col9="NineCol" Double
[A.txt]2
ColNameHeader=false3
Format=Delimited(~)4
MaxScanRows=05
CharacterSet=ANSI6
Col1="FirtCol" Text Width 27
Col2="SecondCol" Char Width 208
Col3="ThreeCol" Char Width 209
Col4="FourCol" Double10
Col5="FiveCol" Double11
Col6="SixCol" Double12
Col7="SevenCol" Double13
Col8="EightCol" Double14
Col9="NineCol" DoubleC#代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Collections;
using System.Data.OleDb;
using System.Data;
using DTS;

namespace TransTxtToAccess
{
class TextToAccess
{
public void Trans()
{
string DBFilePath = string.Empty;
string txtFilePath = string.Empty;
DBFilePath =@"D:\XSLT\Test.mdb";
string TableName = "tmp3";
string TextFileName = "A.txt";
string txtExistFolder = "D:\\XSLT";
try
{
OleDbConnection CurrentProject = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + DBFilePath);
CurrentProject.Open();
Console.WriteLine("Open");
OleDbCommand AccessCommand = new OleDbCommand("Select * into"+" "+TableName+ " from [Text;database="+txtExistFolder+"]."+TextFileName, CurrentProject);
AccessCommand.ExecuteNonQuery();
}
catch (FileLoadException e)
{
Console.WriteLine(e.Message);
}
}
}
}


浙公网安备 33010602011771号