Есть база Paradox, скажем, door.db, которая постоянно обновляется.
Как преобразовать эту базу в базу MySql?
Можно ли это сделать в PHP?
Или есть еще какие-то способы?
Помогите PLS.
Здравствуйте, xxenia, Вы писали:
X>Есть база Paradox, скажем, door.db, которая постоянно обновляется. X>Как преобразовать эту базу в базу MySql? X>Можно ли это сделать в PHP? X>Или есть еще какие-то способы? X>Помогите PLS.
Можно сделать так:
Соединяемся с MySQL и с Paradox через ODBC.
Делаем выборку из Paradox в курсор. А затем просто вставляем данные в таблицу MySQL.
На PHP можно по-моему на прямую залезать и MySQL и в Paradox, но легче делать другими средствами как-то Java или Delphi. Получиться очень быстро.
Здравствуйте, 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
Ну там и другие утилиты посмотри для конвертации может что и подойдет..
Хотя всеравно больше чем уверен мнгогое проверять/править/оптимизировать ручками придется
Здравствуйте, theOne, Вы писали: O>Соединяемся с MySQL и с Paradox через ODBC. O>Делаем выборку из Paradox в курсор. А затем просто вставляем данные в таблицу MySQL.
А есть какой-нибудь пример, как это сделать? Это искать в мануале PHP? O>На PHP можно по-моему на прямую залезать и MySQL и в Paradox, но легче делать другими средствами как-то Java или Delphi. Получиться очень быстро.
А это где подглядеть?
Спасибо за ответ.
Здравствуйте, 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();
}
}
Должно работать. Естественно изменить как нужно код, для собственных хотелок. Внимание обратить на то, что при вставке строк, не попался знак ' , его можно менять на " или `
Здравствуйте, theOne, Вы писали:
O>Должно работать. Естественно изменить как нужно код, для собственных хотелок. Внимание обратить на то, что при вставке строк, не попался знак ' , его можно менять на " или `
кроме того для скорости лучше пихать несколько строк в один запрос
insert into a(b)values(1),(2),(3)....;
(только проследить чтобы размер запроса не превышал максимальный размер пакета),
а то и вообще запихать все в csv и высосать разом при помоши LOAD DATA