powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / openrowset :)
9 сообщений из 9, страница 1 из 1
openrowset :)
    #34145152
Фотография aov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в мс скл-сервере такое есть: можно открыть выборку из другой бд - т.е. СОВСЕМ другой - какой угодно - был бы драйвер к ней. Ну и соответственно потом можно использовать этот роусет как таблицу - вроде как вплоть до джойнов и т.п. А в постгре такое есть? видел токо что постгресную базу можно как-то открыть - сильно не вникал - пока не интересно. Вобщем например мне из постгри нужно например сделать выборку к аксесу например. В скл-сервере такая была метода:
Код: plaintext
1.
2.
3.
4.
5.
6.
ALTER procedure [dbo].[ImpNewAdr] as
insert into mail([NAME],MAIL,NEW,NOTE)
select [name],[mail],new,[note] from
openrowset('Microsoft.Jet.OLEDB.4.0',
	'F:\PricePro\sbs\db.mdb';'admin';'',
	'select [name],[mail],new,[note] from [mail] where new=true');
как на постгре такое сделать? или хоть немного похожее - если так нельзя.
...
Рейтинг: 0 / 0
openrowset :)
    #34145186
Shweik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
написать свою openrowset() на С. Иначе боюсь никак. C одной стороны это безумно сложно ;=)
С другой - есть подобные решения.
...
Рейтинг: 0 / 0
openrowset :)
    #34145248
Фотография aov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот мне второй вариант подходит :) - где бы разжиться примерчиком?
...
Рейтинг: 0 / 0
openrowset :)
    #34145319
Shweik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эх-хе-хе я бы тоже не отказался от готовенького "драйвера для коннекта к любой ДБ из Постгреса" - но реальность такова :
1) Есть проект http://pgfoundry.org/projects/oralink/ = вариант коннекта к Ораклу.
2) Рассматривая дап одной базы я нашел декларации процедур аналогичных /contrib/dblink
(думаю его код ты уже посмотрел) НО для коннекта к M$ SQL! Сорцов этих ХП нет и врядли где появятся.
Больше ничего подобного пока не встречал. Вывод прост - анализируй доступные источники и поробу й написать то что тебе необходимо. Инструменты есть - дело за тобой. Или жди пока напишут ;-)
...
Рейтинг: 0 / 0
openrowset :)
    #34145323
СергейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aovвот мне второй вариант подходит :) - где бы разжиться примерчиком?
А можно то же самое но например используя PL/Java, PL/Perl, PL/Python -- пишете процедурки и из них стучитесь в другие базы и возвращаете рез-ты в Postgres.
Проще всего пожалуй будет это сделать с помощью PL/Java http://wiki.tada.se/wiki/display/pljava/Home
, дабы через JDBC коннектиться и получать результаты элементарно...
...
Рейтинг: 0 / 0
openrowset :)
    #34145385
фффф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для коннекта к <почти> любой БД есть dbi-link . Он правда был сырой в версии 1, теперь версия 2 - похоже тоже перманентная бета (хотя стоит статус Production/Stable). Без хорошего знания perl-а брать это не стоит.

Для своих целей (обмен данными с Sybase и MSSQL) я dbi-link капитально переделывал, и выкладывал сюда. Но по многим причинам в продукцию это не пошло - поэтому тоже не готовое решение для вас.
...
Рейтинг: 0 / 0
openrowset :)
    #34146410
Фотография aov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
яву буду курочить. хотя я в ней валянок :). я по шарпу всё больше - и так то синтаксис похож - но объектная модель другая. может хоть на яве через jdbc примерчик кто кинет?
...
Рейтинг: 0 / 0
openrowset :)
    #34146495
ездун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не скажу точно, но кажись там есть dblink в contrib'ах и он может через жабу. А на сайте мелкомягких поищи jdbc драйвер. Под MSSQL2k5 точно есть, сам качал.
...
Рейтинг: 0 / 0
openrowset :)
    #34146709
СергейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aovяву буду курочить. хотя я в ней валянок :). я по шарпу всё больше - и так то синтаксис похож - но объектная модель другая. может хоть на яве через jdbc примерчик кто кинет?

V svoe vremia tak perelival dannye iz SQL Server'a v Postgres
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
import java.sql.*;
import com.microsoft.sqlserver.jdbc.SQLServerResultSet;
public class transfer {

   public static void main(String[] args) {

      // Create a variable for the connection string.
      String connectionUrl0 = "jdbc:sqlserver://hostname:1433;" +
         "databaseName=aaa;user=bbbb;password=cccc";

      // Declare the JDBC objects.
      Connection con0 = null;
      Statement stmt = null;
      ResultSet rs = null;

      try {
         // Establish the connection.
         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
         con0 = DriverManager.getConnection(connectionUrl0);

         // Create and execute an SQL statement that returns some data.
         String SQL = "SELECT * FROM " +args[ 0 ];//dbo.phototag";
         String delimiter = ",";//"@" ;//args[1];
         stmt = con0.createStatement(SQLServerResultSet.TYPE_SS_SERVER_CURSOR_FORWARD_ONLY, +
                        SQLServerResultSet.CONCUR_READ_ONLY);
         //PreparedStatement pstmt = con0.prepareStatement(SQL,ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
         stmt.setFetchSize(1000);
         rs = stmt.executeQuery(SQL);
         //rs=pstmt.executeQuery();

         ResultSetMetaData rsmd = rs.getMetaData();
         int ncols = rsmd.getColumnCount();

         // Iterate through the data in the result set and display it.
         int count = 0;
         long t = System.currentTimeMillis();
        StringBuilder sb = new StringBuilder(1000000);

         while (rs.next()) {

            sb.append(rs.getString(1));
            for(int i=2;i<=ncols;i++)
            {
              sb.append(delimiter+rs.getString(i));
            }
            sb.append("\n");

            System.out.print(sb);
            if ((++count)%100000==0) 
            {
              long dt = (System.currentTimeMillis()-t);
              double speed  = count*1000./dt;
              double elaps = ((354254163.-count)/speed)/3600;
              double elaps1 = ((long)(elaps*100) )/100.;
              System.err.println("Time: " + dt / 1000. + "s "+
                "Processed: " + count+" records "+
                "Speed: " + (int)speed +"rec/s "+
                "Rem: " + elaps1+ " h");
            }
            sb.setLength( 0 );
         }
      }

      // Handle any errors that may have occurred.
      catch (Exception e) {
         e.printStackTrace();
      }
      finally {
         if (rs != null) try { rs.close(); } catch(Exception e) {}
         if (stmt != null) try { stmt.close(); } catch(Exception e) {}
         if (con0 != null) try { con0.close(); } catch(Exception e) {}
      }


}
}
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / openrowset :)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]