CSV导入数据库

做CSV导入数据库,一般是采用逐行读取,数据连接读取,再有这个通过引用Microsoft.VisualBasic.FileIO.TextFieldParser
其它方法我没试过,有朋友可以提示一下,非常感谢。逐行读取方法比较傻,数据连接读取效率高,通过TextFileParser这个方法比较特殊吧,今天刚发现,感觉不错。
private void button1_Click(object sender, EventArgs e) { subImportCsv_Dataset("f:\\", "jjj.csv"); } public void subImportCsv_Dataset(string filePath, string fileName) { string strConn = @"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq="; strConn += filePath;//这个地方只需要目录就可以了 strConn += ";Extensions=asc,csv,tab,txt;"; OdbcConnection objConn = new OdbcConnection(strConn); DataSet ds = new DataSet(); try { string strSQL = "select * from " + fileName;//文件名,不要带目录 OdbcDataAdapter da = new OdbcDataAdapter(strSQL, objConn); da.Fill(ds); //开始导入数据库 } catch (Exception ex) { throw ex; } }
2.通过TextFileParser读取
` public class CSVHelper
{
static public DataTable ReadCsv(string filepath)
{
DataTable dt = new DataTable("NewTable");
DataRow row;
Microsoft.VisualBasic.FileIO.TextFieldParser TF = new Microsoft.VisualBasic.FileIO.TextFieldParser(filepath, Encoding.GetEncoding("GB2312"));
int i = 0;
string[] strLine;
while (!TF.EndOfData)
{
try
{
TF.Delimiters = new string[] { "\t" };
strLine = TF.ReadFields();
if (i == 0)
{
for (int j = 0; j < strLine.Length; j++)
{
dt.Columns.Add(strLine[j]);
}
//新增加一列,这里列的数据位空
dt.Columns.Add(Guid.NewGuid().ToString());
}
else
{
row = dt.NewRow();
row.ItemArray = strLine;
dt.Rows.Add(row);
}
i++;
}
catch (Exception ex)
{
throw ex;
}
}
TF.Close();

        return dt;
    }
} `
posted @ 2021-01-05 15:11  痞老板的小心肝  阅读(178)  评论(0)    收藏  举报