如何从访问mdb获取数据并将其放入postgresql表中,使用visual c#?

时间:2010-07-06 11:32:05

标签: c# postgresql ms-access npgsql

好吧,我已经完成了 - 我可以通过Microsoft.Jet.OLEDB提供程序连接到访问mdb表,然后我可以使用select查询,OleDbDataAdapter和DataSet从表中获取数据。 / p>

现在,我可以通过Npgsql连接到Postgresql,但是让我感到惊讶的是 - 我是如何从访问表中获取数据并将其放入postgresql表中的?

我想要完成的任务是从访问mdb表中获取数据并使用“select into”查询将其插入到postgresql表中。

3 个答案:

答案 0 :(得分:1)

我认为在这个实例中你不能使用从一个数据库到另一个数据库的“SELECT INTO”查询(因为这两个数据库在不同的引擎上)。您需要做的是将数据从MDB读入一些CLR对象,然后将CLR数据读入PostgreSQL数据库,这非常简单。只是不可能按照你想要的方式去做

答案 1 :(得分:0)

以下是一些非常适合您的业余笔记。它们指的是SQL Server Express,因为我无法访问postgressql。我从连接SQL Server表到Access并检查连接属性获得了连接字符串,但是,您也可以在此处查看:http://www.connectionstrings.com/postgre-sql。这两行将Access中table1中的值插入到SQL Express中的table2中。在Access中,如果查询不正确,则查询将失败且不发出警告(在本例中为Access 2010)。我在Visual c#2010 Express中试过这个。

//create the database connection
OleDbConnection aConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\docs\\db.mdb");

//create the command object and store the sql query
OleDbCommand aCommand = new OleDbCommand("INSERT into [ODBC;Description=TEST;DRIVER=SQL Server;SERVER=COMP\\SQLEXPRESS;Trusted_Connection=Yes;DATABASE=test].Table2 (id, atext) select id, atext from table1", aConnection);

答案 2 :(得分:0)

嘿,感谢所有帮助过我的人,我终于明白了。 因此,对于所有遇到相同情况的人来说 - 这是Postgresql的正确连接字符串的解决方案。:

//create the database connection
OleDbConnection aConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\docs\\db.mdb");

//create the command object and store the sql query
OleDbCommand aCommand = new OleDbCommand("INSERT into [ODBC;DSN=PostgreSQL;DATABASE=postgres;SERVER=localhost;PORT=5432;UID=postgres;PWD=test;].Table2 (id, atext) select id, atext from table1", aConnection);