好吧,我已经完成了 - 我能够通过 Microsoft.Jet.OLEDB 提供程序连接到访问 mdb 表,然后我可以使用选择查询、OleDbDataAdapter 和 DataSet 从表中获取数据。
现在,我可以通过 Npgsql 连接到 Postgresql,但是让我无法理解的是 - 我如何能够从访问表中获取数据并将其放入 postgresql 表中?
我想要完成的 - 是从访问 mdb 表中获取数据并使用“select into”查询将其插入到 postgresql 表中。
好吧,我已经完成了 - 我能够通过 Microsoft.Jet.OLEDB 提供程序连接到访问 mdb 表,然后我可以使用选择查询、OleDbDataAdapter 和 DataSet 从表中获取数据。
现在,我可以通过 Npgsql 连接到 Postgresql,但是让我无法理解的是 - 我如何能够从访问表中获取数据并将其放入 postgresql 表中?
我想要完成的 - 是从访问 mdb 表中获取数据并使用“select into”查询将其插入到 postgresql 表中。
在这种情况下,我认为您不能使用从一个数据库到另一个数据库的“SELECT INTO”查询(因为这两个数据库位于不同的引擎上)。您需要做的是将读取的数据存储到 MDB 中的某个 CLR 对象中,然后将 CLR 数据读取到 PostgreSQL 数据库中,这相当简单。只是不可能按照你想要的方式去做
嘿,感谢所有帮助过我的人,我终于弄明白了。因此,对于所有遇到相同情况的人 - 这是 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);
这里有一些非常业余的笔记,可能会对你有所帮助。它们指的是 SQL Server Express,因为我无权访问 postgressql。我通过将 SQL 服务器表链接到 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);