ODBC批量复制C#

时间:2017-10-02 16:42:17

标签: c# sql-server odbc bulk-load

我正在使用下面这样的批量复制,它运行良好:

using (SqlTransaction bulkCopyTransaction = connector.RawConnection.BeginTransaction())
{
    using (SqlBulkCopy bk = new SqlBulkCopy(connector.RawConnection, SqlBulkCopyOptions.KeepIdentity, bulkCopyTransaction))
    {

然后我得到了一个非常丑陋的消息,我不得不修改我的系统以使用ODBC而不是system.sql.data,并且没有批量复制。这是一个很大的问题,因为我依赖批量复制很多。他们需要我使用ODBC的原因是因为他们希望随时更改计算机和密码以及服务器,而不必担心重新编译,并且app.config文件中不能包含未加密的密码。

所以我的需求就是我想要一个CSV文件 - 就像它一样 - 按照它们的顺序排列所有列并将它们放在一个SQL文件中。文件可能非常大(即1 GB +)

我已经探索过使用带有BCP的存储过程但需要密码。我已经探索过使用批量插入,这是一种可能性,但它需要我从每个CSV变体中制作一个XSD文件(这很多)。我查看了SQL批量复制包(http://www.sqlbulkcopy.org/getting-started/),但这也需要列绑定。

如果您有任何想法,意见或经验,我很乐意听取您的想法。

1 个答案:

答案 0 :(得分:0)

这是我发现能够做到这一点的最快方法:

ObdcCommand cmd = new ObdcCommand("insert into TableName
    select * from OpenRowset
    ('MSDASQL', 'Driver={Microsoft Access Text Driver (*.txt, *.csv)}; 
    ColNameHeader = TRUE; Format = CSVDelimited; ''','select * from" + FileName+"')", connection);