将数据从 SQL Server 导出到 PostgreSQL

Posted

技术标签:

【中文标题】将数据从 SQL Server 导出到 PostgreSQL【英文标题】:Exporting data from SQL Server to PostgreSQL 【发布时间】:2013-03-21 22:56:00 【问题描述】:

我正在使用此示例,当我开始导出 300,000 行需要 12 分钟时,我可以做些什么来加快这个过程或者你知道另一种方法吗?

string SourceDriver = "Driver=SQL Server Native Client 10.0";
OdbcConnection SourceConnection = new OdbcConnection(SourceDriver+ ";Server=10.10.10.10;Database=sourceMSSQL;Uid=sa;Pwd=12345;");

string DestDriver = "Driver=PostgreSQL";
OdbcConnection DestConnection = new OdbcConnection(DestDriver+ ";Server=10.10.10.11;Port=5432;Database=destPostgreSQL;Uid=postgres;Pwd=12345;");

string SourceSql = "SELECT Code, Label, Model, List, Size, Quantity, City, Family,  ExportDate FROM MovPedidosP0";
string DestSql = "INSERT INTO tmp_MovPedidosP0_t (Code, Label, Model, List, Size, Quantity, City, Family,  ExportDate) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";

using(OdbcCommand SourceCommand = new OdbcCommand(SourceSql, SourceConnection))

    SourceConnection.Open();
    using(OdbcDataReader SourceReader = SourceCommand.ExecuteReader())
    
        Console.WriteLine("Exporting...");

        DestConnection.Open();

        while(SourceReader.Read())
        
            using(OdbcCommand DestCommand = new OdbcCommand(DestSql, DestConnection))
            
                DestCommand.Prepare();
                DestCommand.Parameters.Clear();

                for(int i=0; i<SourceReader.FieldCount; i++)
                
                    DestCommand.Parameters.AddWithValue("?ID" + (i+1).ToString(), SourceReader[i]);
                

                DestCommand.ExecuteNonQuery();
                TotalRows++;
            
        

        DestConnection.Close();
    


SourceConnection.Close();

【问题讨论】:

你可以看看 PostgreSql 的批处理:***.com/questions/758945/… 【参考方案1】:

如果您使用 SSIS 导出到文本文件并使用 COPY 命令导入,则会简单得多,而且可能更快。

【讨论】:

甚至使用SSIS直接复制到PostgresSQL数据库。 我会使用 SSIS 和 COPY,但我需要通过应用程序导出信息,并且是最终用户。【参考方案2】:

尝试使用原生 NpgsqlConnection 和 SqlConnection 代替 Odbc 连接。

http://npgsql.projects.pgfoundry.org/

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.aspx

【讨论】:

以上是关于将数据从 SQL Server 导出到 PostgreSQL的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Excel 数据从不同的工作表导出到 SQL-SERVER 数据库?

将数据从SQL Server导出到Microsoft Excel数据表

将数据从 MS Sql Server 存储过程导出到 excel 文件

将数据从 SQL Server Express 导出到 CSV(需要引用和转义)

如何将数据库从mysql工作台导出到sql server

将数据从平面文件加载到 Sql Server 表,并使用 SSIS 导出到 excel