Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / openrowset :) / 9 сообщений из 9, страница 1 из 1
21.11.2006, 21:03
    #34145152
aov
aov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
openrowset :)
в мс скл-сервере такое есть: можно открыть выборку из другой бд - т.е. СОВСЕМ другой - какой угодно - был бы драйвер к ней. Ну и соответственно потом можно использовать этот роусет как таблицу - вроде как вплоть до джойнов и т.п. А в постгре такое есть? видел токо что постгресную базу можно как-то открыть - сильно не вникал - пока не интересно. Вобщем например мне из постгри нужно например сделать выборку к аксесу например. В скл-сервере такая была метода:
Код: 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
21.11.2006, 21:35
    #34145186
Shweik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
openrowset :)
написать свою openrowset() на С. Иначе боюсь никак. C одной стороны это безумно сложно ;=)
С другой - есть подобные решения.
...
Рейтинг: 0 / 0
21.11.2006, 22:31
    #34145248
aov
aov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
openrowset :)
вот мне второй вариант подходит :) - где бы разжиться примерчиком?
...
Рейтинг: 0 / 0
22.11.2006, 00:11
    #34145319
Shweik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
openrowset :)
Эх-хе-хе я бы тоже не отказался от готовенького "драйвера для коннекта к любой ДБ из Постгреса" - но реальность такова :
1) Есть проект http://pgfoundry.org/projects/oralink/ = вариант коннекта к Ораклу.
2) Рассматривая дап одной базы я нашел декларации процедур аналогичных /contrib/dblink
(думаю его код ты уже посмотрел) НО для коннекта к M$ SQL! Сорцов этих ХП нет и врядли где появятся.
Больше ничего подобного пока не встречал. Вывод прост - анализируй доступные источники и поробу й написать то что тебе необходимо. Инструменты есть - дело за тобой. Или жди пока напишут ;-)
...
Рейтинг: 0 / 0
22.11.2006, 00:16
    #34145323
СергейК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
openrowset :)
aovвот мне второй вариант подходит :) - где бы разжиться примерчиком?
А можно то же самое но например используя PL/Java, PL/Perl, PL/Python -- пишете процедурки и из них стучитесь в другие базы и возвращаете рез-ты в Postgres.
Проще всего пожалуй будет это сделать с помощью PL/Java http://wiki.tada.se/wiki/display/pljava/Home
, дабы через JDBC коннектиться и получать результаты элементарно...
...
Рейтинг: 0 / 0
22.11.2006, 03:36
    #34145385
фффф
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
openrowset :)
Для коннекта к <почти> любой БД есть dbi-link . Он правда был сырой в версии 1, теперь версия 2 - похоже тоже перманентная бета (хотя стоит статус Production/Stable). Без хорошего знания perl-а брать это не стоит.

Для своих целей (обмен данными с Sybase и MSSQL) я dbi-link капитально переделывал, и выкладывал сюда. Но по многим причинам в продукцию это не пошло - поэтому тоже не готовое решение для вас.
...
Рейтинг: 0 / 0
22.11.2006, 12:41
    #34146410
aov
aov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
openrowset :)
яву буду курочить. хотя я в ней валянок :). я по шарпу всё больше - и так то синтаксис похож - но объектная модель другая. может хоть на яве через jdbc примерчик кто кинет?
...
Рейтинг: 0 / 0
22.11.2006, 13:01
    #34146495
ездун
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
openrowset :)
Не скажу точно, но кажись там есть dblink в contrib'ах и он может через жабу. А на сайте мелкомягких поищи jdbc драйвер. Под MSSQL2k5 точно есть, сам качал.
...
Рейтинг: 0 / 0
22.11.2006, 13:52
    #34146709
СергейК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
openrowset :)
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
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / openrowset :) / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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