ODBC 批量复制 C#
ODBC Bulk Copy C#
我像下面这样使用批量复制并且工作正常:
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/),但这也需要列绑定。
如果您对此有任何想法、意见或经验,我很想听听您的想法。
这是我发现能够做到这一点的最快方法:
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);
我像下面这样使用批量复制并且工作正常:
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/),但这也需要列绑定。
如果您对此有任何想法、意见或经验,我很想听听您的想法。
这是我发现能够做到这一点的最快方法:
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);