4

我已经在 SQL Server 中有一些表,我正在编写一个 C# 程序来从一些平面文件中填充这些表。我打算用来SQLBulkCopy加载表格。

为 SQLBulkCopy 的每个 DataTable 定义所有列可能需要做很多工作。从现有 SQL Server 表的定义中用 C# 生成这些 DataTables 是否是一种简单的方法?


我不能使用Bulk insertbcp因为平面文件处于不同的奇怪布局中,并且在插入之前必须由一些 C# 代码解析它们。

4

2 回答 2

16

如果您想要蛮力方法,您可以对每个表使用以下内容:

    DataTable dt = new DataTable();
    using (SqlConnection conn = new SqlConnection("Some SQLConnectionString")) {
        conn.Open();
        using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT TOP 0 * FROM SomeTable", conn))
        {
            adapter.Fill(dt);
        };
    };

SELECT TOP 0只返回没有记录的表结构。

于 2012-07-31T21:58:15.350 回答
1

如果您正在寻找一种将平面文件加载到 SQL 中的快速方法,您可以使用 BULK INSERT。只需指定一个分隔符,只要文件中的列按照与数据库表相同的顺序排列,所有内容都会自动映射。您确实需要一些额外的权限才能执行批量插入,但根据我的经验,这是处理该过程的最快、最有效的方法。

BULK INSERT Database.dbo.Table
FROM 'C:\inetpub\website\file.csv'
WITH (FIELDTERMINATOR = ',')
于 2012-07-31T21:55:48.327 回答