繁体   English   中英

从SQL服务器表的模式自动在C#中定义DataTable?

[英]Automatically define the DataTable in C# from the schema of SQL server tables?

我已经在SQL Server中有一些表,我正在编写一个C#程序来填充一些平面文件中的表。 我计划使用SQLBulkCopy来加载表。

为SQLBulkCopy定义每个DataTable的所有列可能需要做很多工作。 是否可以从现有SQL Server表的定义中轻松地在C#中生成这些DataTable?


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

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

    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将仅返回没有记录的表结构。

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

BULK INSERT Database.dbo.Table
FROM 'C:\inetpub\website\file.csv'
WITH (FIELDTERMINATOR = ',')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM