最近在做一个国外项目,发现他们接口还是使用的文件服务器的方式,采用CSV文件的方式将数据传输给我。网上关于此类方式的消息少之又少,特此写下此篇经验。
源代码如下:
string connectionString = "server = (local); uid = sa; pwd = aaa; database = bbb";
string strConn = @"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=";
strConn += "F:\\Stock\\";//这个地方只需要目录就可以了
strConn += ";Extensions=asc,csv,tab,txt;";
OdbcConnection objConn = new OdbcConnection(strConn);
try
{
string strSQL = "select * from " + "stock_view.csv";//文件名,不要带目录
OdbcDataAdapter da = new OdbcDataAdapter(strSQL, objConn);
//DataSet ds = new DataSet();
da.Fill(ds);
}
catch
{
}
//用bcp导入数据
//excel文件中列的顺序必须和数据表的列顺序一致,因为数据导入时,是从excel文件的第二行数据开始,不管数据表的结构是什么样的,反正就是第一列的数据会插入到数据表的第一列字段中,第二列的数据插入到数据表的第二列字段中,以此类推,它本身不会去判断要插入的数据是对应数据表中哪一个字段的
using (System.Data.SqlClient.SqlBulkCopy bcp = new System.Data.SqlClient.SqlBulkCopy(connectionString))
{
bcp.SqlRowsCopied += new System.Data.SqlClient.SqlRowsCopiedEventHandler(bcp_SqlRowsCopied);
bcp.BatchSize = 100;//每次传输的行数
bcp.NotifyAfter = 100;//进度提示的行数
bcp.DestinationTableName = "Product";//目标表
bcp.WriteToServer(ds.Tables[0]);
}