Название: перенос данных из одной базы в другую базу
Отправлено: kadr от Январь 12, 2010, 10:33
Привет всем, есть небольшая проблема, есть 2 базы, одна MS Access, другая MySQL, надо из access перенести в mysql вот код: #include <QtCore/QCoreApplication> #include "QSqlDatabase" #include "QSqlQuery" #include "QSqlError" #include "QtCore" #include "QTextStream" #include "QFile"
int main() { QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251")); QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251")); QTextCodec::setCodecForLocale(QTextCodec::codecForName("Windows-1251"));
QSqlDatabase my_db = QSqlDatabase::addDatabase("QMYSQL"); my_db.setHostName("192.168.1.223"); my_db.setDatabaseName("develop"); my_db.setUserName("1c"); my_db.setPassword("1c"); my_db.open(); if (!my_db.isOpen()) { qDebug() << "Bd is not open" << my_db.lastError().text() ; return 0; }
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=d:\\7n.mdb"); db.open(); if (!db.open()) { qDebug() << db.lastError().text(); }
QSqlQuery q,m; q.exec("SELECT mcod,tf_okato,c_ogrn,m_names,m_namesf,post_id,adres,fam_gv,im_gv,ot_gv,fam_buh,im_buh,ot_buh,tel,fax,e_mail,date_b,date_e FROM tlpu");
QString SQL; QFile file("asf.txt"); QTextStream out(&file); file.open(QIODevice::WriteOnly | QIODevice::Text); int i = 0;
while (q.next()) { SQL = QString("INSERT INTO 7n_lpu (mcode,okato,ogrn,name,name_full,post_id,adres,fam_gv,im_gv,otch_gv,fam_buh,im_buh,otch_buh,tel,fax,e_mail,date_b,date_e) VALUES ('%1','%2','%3','%4','%5','%6','%7','%8','%9','%10','%11','%12','%13','%14','%15','%16','%17','%18')") .arg(q.value(0).toString().trimmed()) .arg(q.value(1).toString().trimmed()) .arg(q.value(2).toString().trimmed()) .arg(q.value(3).toString().trimmed()) .arg(q.value(4).toString().trimmed()) .arg(q.value(5).toString().trimmed()) .arg(q.value(6).toString().trimmed()) .arg(q.value(7).toString().trimmed()) .arg(q.value(8).toString().trimmed()) .arg(q.value(9).toString().trimmed()) .arg(q.value(10).toString().trimmed()) .arg(q.value(11).toString().trimmed()) .arg(q.value(12).toString().trimmed()) .arg(q.value(13).toString().trimmed()) .arg(q.value(14).toString().trimmed()) .arg(q.value(15).toString().trimmed()) .arg(q.value(16).toString().trimmed()) .arg(q.value(17).toString().trimmed());
m.exec(SQL); } }
собственно проблема в том, когда открываю базу данных mysql в самом начале, то данные заносятся в базу, но в не понятной кодировке ????????????????????????????????? ?????????????? ????????????? что то типа такого, а если в начале открывать бд access, то данные вообще не заносятся в бд mysql, и появляется ошибка чтения из памяти, но зато в файл записывается в нормальной кодировке, а первый вариант и в файл тоже в не понятной кодировке записывается. В чем проблема, как мне записать данные в нормальной кодировке в mysql?
Название: Re: перенос данных из одной базы в другую базу
Отправлено: KADABRA от Январь 12, 2010, 13:31
И каким-же образом программа должна угадывать из какой базы брать данные, а в какую вставлять? #include <QtCore/QCoreApplication> #include "QSqlDatabase" #include "QSqlQuery" #include "QSqlError" #include "QtCore" #include "QTextStream" #include "QFile"
int main() { QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251")); QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251")); QTextCodec::setCodecForLocale(QTextCodec::codecForName("Windows-1251"));
QSqlDatabase my_db = QSqlDatabase::addDatabase("QMYSQL", "mysql_db"); my_db.setHostName("192.168.1.223"); my_db.setDatabaseName("develop"); my_db.setUserName("1c"); my_db.setPassword("1c"); my_db.open(); my_db.exec("SET NAMES cp1251"); if (!my_db.isOpen()) { qDebug() << "Bd is not open" << my_db.lastError().text() ; return 0; }
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "access_db"); db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=d:\\7n.mdb"); db.open(); if (!db.open()) { qDebug() << db.lastError().text(); }
QSqlQuery q(db), m(my_db); q.exec("SELECT mcod,tf_okato,c_ogrn,m_names,m_namesf,post_id,adres,fam_gv,im_gv,ot_gv,fam_buh,im_buh,ot_buh,tel,fax,e_mail,date_b,date_e FROM tlpu");
QString SQL; QFile file("asf.txt"); QTextStream out(&file); file.open(QIODevice::WriteOnly | QIODevice::Text); int i = 0;
while (q.next()) { SQL = QString("INSERT INTO 7n_lpu (mcode,okato,ogrn,name,name_full,post_id,adres,fam_gv,im_gv,otch_gv,fam_buh,im_buh,otch_buh,tel,fax,e_mail,date_b,date_e) VALUES ('%1','%2','%3','%4','%5','%6','%7','%8','%9','%10','%11','%12','%13','%14','%15','%16','%17','%18')") .arg(q.value(0).toString().trimmed()) .arg(q.value(1).toString().trimmed()) .arg(q.value(2).toString().trimmed()) .arg(q.value(3).toString().trimmed()) .arg(q.value(4).toString().trimmed()) .arg(q.value(5).toString().trimmed()) .arg(q.value(6).toString().trimmed()) .arg(q.value(7).toString().trimmed()) .arg(q.value(8).toString().trimmed()) .arg(q.value(9).toString().trimmed()) .arg(q.value(10).toString().trimmed()) .arg(q.value(11).toString().trimmed()) .arg(q.value(12).toString().trimmed()) .arg(q.value(13).toString().trimmed()) .arg(q.value(14).toString().trimmed()) .arg(q.value(15).toString().trimmed()) .arg(q.value(16).toString().trimmed()) .arg(q.value(17).toString().trimmed());
m.exec(SQL); } }
Название: Re: перенос данных из одной базы в другую базу
Отправлено: kadr от Январь 12, 2010, 13:37
О спасибо, теперь все работает!
|