将csv导入SQL Server的快速而简单的方法

Aus*_*ris 9 .net c# sql-server sqlbulkcopy

我们正在导入一个csv文件,CSVReader然后使用SqlBulkCopy该数据插入SQL Server.这段代码对我们很有用,而且非常简单,但是想知道是否有更快的方法(我们的一些文件有100000行)也不会太复杂?

        SqlConnection conn = new SqlConnection(connectionString);
        conn.Open();
        SqlTransaction transaction = conn.BeginTransaction();
        try
        {
            using (TextReader reader = File.OpenText(sourceFileLocation))
            {
                CsvReader csv = new CsvReader(reader, true);
                SqlBulkCopy copy = new SqlBulkCopy(conn, SqlBulkCopyOptions.KeepIdentity, transaction);
                copy.DestinationTableName = reportType.ToString();
                copy.WriteToServer(csv);
                transaction.Commit();
            }
        }
        catch (Exception ex)
        {
            transaction.Rollback();
            success = false;
            SendFileImportErrorEmail(Path.GetFileName(sourceFileLocation), ex.Message);
        }
        finally
        {
            conn.Close();
        }
Run Code Online (Sandbox Code Playgroud)

Mar*_*cke 3

与其构建自己的工具来执行此操作,不如查看SQL Server 导入和导出/SSIS。您可以直接定位平面文件和 SQL Server 数据库。输出dtsx包还可以从命令行运行或通过 SQL Server 代理作为作业运行。

我建议这样做的原因是因为该向导针对并行性进行了优化,并且在大型平面文件上运行得非常好。