Paradox + MySql
От: xxenia  
Дата: 10.11.03 11:21
Оценка:
Есть база Paradox, скажем, door.db, которая постоянно обновляется.
Как преобразовать эту базу в базу MySql?
Можно ли это сделать в PHP?
Или есть еще какие-то способы?
Помогите PLS.
Re: Paradox + MySql
От: theOne Россия  
Дата: 10.11.03 11:49
Оценка: +1
Здравствуйте, xxenia, Вы писали:

X>Есть база Paradox, скажем, door.db, которая постоянно обновляется.

X>Как преобразовать эту базу в базу MySql?
X>Можно ли это сделать в PHP?
X>Или есть еще какие-то способы?
X>Помогите PLS.

Можно сделать так:

Соединяемся с MySQL и с Paradox через ODBC.
Делаем выборку из Paradox в курсор. А затем просто вставляем данные в таблицу MySQL.

На PHP можно по-моему на прямую залезать и MySQL и в Paradox, но легче делать другими средствами как-то Java или Delphi. Получиться очень быстро.
Re: Paradox + MySql
От: vvaizh http://izh-test.sourceforge.net/
Дата: 10.11.03 12:30
Оценка:
Здравствуйте, xxenia, Вы писали:

X>Есть база Paradox, скажем, door.db, которая постоянно обновляется.

X>Как преобразовать эту базу в базу MySql?
X>Можно ли это сделать в PHP?
X>Или есть еще какие-то способы?
X>Помогите PLS.

Согласен с предыдущим оратором, что перенос с БД на БД всегда не без ручного труда..
Причем способ зависит от личных предпочтений, проще конечно через ODBC.
Хотя люди пишут и автоматические всякие конвертеры
типа
http://www.mysql.com/portal/search.php?category_id=37&q=Paradox&portal=software
Ну там и другие утилиты посмотри для конвертации может что и подойдет..
Хотя всеравно больше чем уверен мнгогое проверять/править/оптимизировать ручками придется
http://izh-test.sourceforge.net/russian/introduction.html
Re[2]: Paradox + MySql
От: xxenia  
Дата: 10.11.03 17:59
Оценка:
Здравствуйте, theOne, Вы писали:
O>Соединяемся с MySQL и с Paradox через ODBC.
O>Делаем выборку из Paradox в курсор. А затем просто вставляем данные в таблицу MySQL.
А есть какой-нибудь пример, как это сделать? Это искать в мануале PHP?
O>На PHP можно по-моему на прямую залезать и MySQL и в Paradox, но легче делать другими средствами как-то Java или Delphi. Получиться очень быстро.
А это где подглядеть?
Спасибо за ответ.
Re[3]: Paradox + MySql
От: theOne Россия  
Дата: 11.11.03 07:04
Оценка:
Здравствуйте, xxenia, Вы писали:

X>Здравствуйте, theOne, Вы писали:

O>>Соединяемся с MySQL и с Paradox через ODBC.
O>>Делаем выборку из Paradox в курсор. А затем просто вставляем данные в таблицу MySQL.
X>А есть какой-нибудь пример, как это сделать? Это искать в мануале PHP?
O>>На PHP можно по-моему на прямую залезать и MySQL и в Paradox, но легче делать другими средствами как-то Java или Delphi. Получиться очень быстро.
X>А это где подглядеть?
X>Спасибо за ответ.

На Java:
import java.io.*;
import java.util.*;
import java.sql.*;

public class Run {

  public static void main(String[] args) throws Exception {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    // Соединяемся с БД определенной в ODBC Administrator с Data Source Name как paradox
    Connection conn1 = DriverManager.getConnection("jdbc:odbc:paradox");
    // Производим выборку из таблицы
    String sql = "SELECT * FROM table1";
    Statement stmt = conn1.createStatement();
    ResultSet rset = stmt.executeQuery(sql);

    Class.forName("org.gjt.mm.mysql.Driver");
    String database = "db_name", username="username", password="password";
    Connection conn2 = DriverManager.getConnection("jdbc:mysql://127.0.0.1/"+ database +"?user=" + username + "&password=" + password );
    Statement stmt2 = conn2.createStatement();

    conn2.setAutoCommit(false); // Чтобы не было commit после каждой вставки
    // Цикл по таблице из paradox и вставка данных в аналогичную таблицу mySQL
    String f1, f2; // Переменные для обмена значениями между таблицами
    String insertStatement;
    while(rset.next()) {
      // Предположим что таблица table1 имеет два строковых поля field1, field2
      f1 = rset.getString(1);
      f2 = rset.getString(2);
      insertStatement = "INSERT INTO table1 (field1, field2) VALUES ('" + f1 +"', '" + f2 +"')";
      stmt2.executeUpdate(insertStatement);
    }
    conn2.commit();
    conn1.close();
    conn2.close();
  }
}


Должно работать. Естественно изменить как нужно код, для собственных хотелок. Внимание обратить на то, что при вставке строк, не попался знак ' , его можно менять на " или `
Re[4]: Paradox + MySql
От: vvaizh http://izh-test.sourceforge.net/
Дата: 11.11.03 07:26
Оценка:
Здравствуйте, theOne, Вы писали:

O>Должно работать. Естественно изменить как нужно код, для собственных хотелок. Внимание обратить на то, что при вставке строк, не попался знак ' , его можно менять на " или `


кроме того для скорости лучше пихать несколько строк в один запрос

insert into a(b)values(1),(2),(3)....;


(только проследить чтобы размер запроса не превышал максимальный размер пакета),
а то и вообще запихать все в csv и высосать разом при помоши LOAD DATA
http://izh-test.sourceforge.net/russian/introduction.html
Re: Paradox + MySql
От: xxenia  
Дата: 11.11.03 20:47
Оценка:
Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.