diff options
Diffstat (limited to 'contrib/mysql_to_pgsql')
-rw-r--r-- | contrib/mysql_to_pgsql/CMakeLists.txt | 21 | ||||
-rw-r--r-- | contrib/mysql_to_pgsql/README | 14 | ||||
-rw-r--r-- | contrib/mysql_to_pgsql/cmake/FindMySQL.cmake | 74 | ||||
-rw-r--r-- | contrib/mysql_to_pgsql/cmake/FindPostgreSQL.cmake | 82 | ||||
-rw-r--r-- | contrib/mysql_to_pgsql/src/defines.h | 184 | ||||
-rw-r--r-- | contrib/mysql_to_pgsql/src/main.cpp | 339 |
6 files changed, 0 insertions, 714 deletions
diff --git a/contrib/mysql_to_pgsql/CMakeLists.txt b/contrib/mysql_to_pgsql/CMakeLists.txt deleted file mode 100644 index 490a023e4ec..00000000000 --- a/contrib/mysql_to_pgsql/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -SET(CMAKE_VERBOSE_MAKEFILE ON) -cmake_minimum_required (VERSION 2.6) - -INCLUDE(cmake/FindMySQL.cmake) -INCLUDE(cmake/FindPostgreSQL.cmake) - -MESSAGE("-- Check PostgreSQL") -FIND_PGSQL() -ADD_DEFINITIONS(-DDO_POSTGRESQL) - -MESSAGE("-- Check MySQL") -FIND_MYSQL() -ADD_DEFINITIONS(-DDO_MYSQL) - -INCLUDE_DIRECTORIES(${MYSQL_INCLUDE_DIR}) -INCLUDE_DIRECTORIES(${PGSQL_INCLUDE_DIR}) - -ADD_EXECUTABLE (mysql2pgsql src/main.cpp) - -TARGET_LINK_LIBRARIES(mysql2pgsql ${PGSQL_LIBRARIES}) -TARGET_LINK_LIBRARIES(mysql2pgsql ${MYSQL_LIBRARIES}) diff --git a/contrib/mysql_to_pgsql/README b/contrib/mysql_to_pgsql/README deleted file mode 100644 index bf7083fb663..00000000000 --- a/contrib/mysql_to_pgsql/README +++ /dev/null @@ -1,14 +0,0 @@ -Using cmake on a Windows ------------------- - 1. install cmake (http://www.cmake.org/cmake/resources/software.html) - 2. cmake -i - 3. Project.sln - 4. {Debug/Release}/mysql2pgsql.exe - -Using cmake on a Unix/Linux ------------------- - 1. install cmake - 2. cmake -i - 3. make - 4. ./mysql2pgsql - diff --git a/contrib/mysql_to_pgsql/cmake/FindMySQL.cmake b/contrib/mysql_to_pgsql/cmake/FindMySQL.cmake deleted file mode 100644 index 3d13c6f4d2a..00000000000 --- a/contrib/mysql_to_pgsql/cmake/FindMySQL.cmake +++ /dev/null @@ -1,74 +0,0 @@ -# - Find mysqlclient -# Find the native MySQL includes and library -# -# MYSQL_INCLUDE_DIR - where to find mysql.h, etc. -# MYSQL_LIBRARIES - List of libraries when using MySQL. -# MYSQL_FOUND - True if MySQL found. -MACRO(FIND_MYSQL) - -IF (MYSQL_INCLUDE_DIR) - # Already in cache, be silent - SET(MySQL_FIND_QUIETLY TRUE) -ENDIF (MYSQL_INCLUDE_DIR) - -FIND_PATH(MYSQL_INCLUDE_DIR mysql.h - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 6.0;Location]/include" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.1;Location]/include" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.0;Location]/include" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 4.1;Location]/include" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 4.0;Location]/include" - /usr/local/mysql/include - /usr/local/include/mysql - /usr/local/include - /usr/include/mysql - /usr/include - /usr/mysql/include -) - -IF(MSVC) - SET(MYSQL_NAMES libmysql) -ELSE(MSVC) - SET(MYSQL_NAMES mysqlclient mysqlclient_r) -ENDIF(MSVC) -SET(MYSQL_SEARCH_LIB_PATHS - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 6.0;Location]/lib/opt" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.1;Location]/lib/opt" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.0;Location]/lib/opt" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 4.1;Location]/lib/opt" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 4.0;Location]/lib/opt" - /usr/local/mysql/lib - /usr/local/lib/mysql - /usr/local/lib - /usr/lib/mysql - /usr/lib -) -FIND_LIBRARY(MYSQL_LIBRARY - NAMES ${MYSQL_NAMES} - PATHS ${MYSQL_SEARCH_LIB_PATHS} -) - -IF (MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY) - SET(MYSQL_FOUND TRUE) - SET( MYSQL_LIBRARIES ${MYSQL_LIBRARY} ) -ELSE (MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY) - SET(MYSQL_FOUND FALSE) - SET( MYSQL_LIBRARIES ) -ENDIF (MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY) - -IF (MYSQL_FOUND) - IF (NOT MySQL_FIND_QUIETLY) - MESSAGE(STATUS "Found MySQL: ${MYSQL_LIBRARY}") - ENDIF (NOT MySQL_FIND_QUIETLY) -ELSE (MYSQL_FOUND) - IF (MySQL_FIND_REQUIRED) - MESSAGE(STATUS "Looked for MySQL libraries named ${MYSQL_NAMES}.") - MESSAGE(FATAL_ERROR "Could NOT find MySQL library") - ENDIF (MySQL_FIND_REQUIRED) -ENDIF (MYSQL_FOUND) - -MARK_AS_ADVANCED( - MYSQL_LIBRARY - MYSQL_INCLUDE_DIR -) - -ENDMACRO(FIND_MYSQL) diff --git a/contrib/mysql_to_pgsql/cmake/FindPostgreSQL.cmake b/contrib/mysql_to_pgsql/cmake/FindPostgreSQL.cmake deleted file mode 100644 index 6cfabd2a2ff..00000000000 --- a/contrib/mysql_to_pgsql/cmake/FindPostgreSQL.cmake +++ /dev/null @@ -1,82 +0,0 @@ -# - Find libpq -# Find the native PostgreSQL includes and library -# -# PGSQL_INCLUDE_DIR - where to find libpq-fe.h, etc. -# PGSQL_LIBRARIES - List of libraries when using PGSQL. -# PGSQL_FOUND - True if PGSQL found. - -MACRO(FIND_PGSQL) -IF (PGSQL_INCLUDE_DIR) - # Already in cache, be silent - SET(PostgreSQL_FIND_QUIETLY TRUE) -ENDIF (PGSQL_INCLUDE_DIR) - -# the registry settings checked are in order: -# - for pgInstaller 8.2.x postgresql version -# - for pgInstaller 8.3.x postgresql version -SET(PGSQL_WIN_BASE - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\PostgreSQL\\Installations\\{B823632F-3B72-4514-8861-B961CE263224};Base Directory]" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\PostgreSQL\\Installations\\{1F701DBD-1660-4108-B10A-FB435EA63BF0};Base Directory]") - -IF(PGSQL_WIN_BASE) - IF(MSVC) - SET(PGSQL_SEARCH_LIB_PATHS "${PGSQL_WIN_BASE}/lib/ms") - ELSE(MSVC) - SET(PGSQL_SEARCH_LIB_PATHS "${PGSQL_WIN_BASE}/lib") - ENDIF(MSVC) -ENDIF(PGSQL_WIN_BASE) - -FIND_PATH(PGSQL_INCLUDE_DIR libpq-fe.h - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\PostgreSQL\\Installations\\{1F701DBD-1660-4108-B10A-FB435EA63BF0};Base Directory]/include" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\PostgreSQL\\Installations\\{B823632F-3B72-4514-8861-B961CE263224};Base Directory]/include" - /usr/local/pgsql/include - /usr/local/postgresql/include - /usr/local/include/pgsql - /usr/local/include/postgresql - /usr/local/include - /usr/include/pgsql - /usr/include/postgresql - /usr/include - /usr/pgsql/include - /usr/postgresql/include -) - -SET(PGSQL_NAMES pq libpq) -SET(PGSQL_SEARCH_LIB_PATHS - ${PGSQL_SEARCH_LIB_PATHS} - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\PostgreSQL\\Installations\\{1F701DBD-1660-4108-B10A-FB435EA63BF0};Base Directory]/lib" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\PostgreSQL\\Installations\\{B823632F-3B72-4514-8861-B961CE263224};Base Directory]/lib" - /usr/local/pgsql/lib - /usr/local/lib - /usr/lib -) -FIND_LIBRARY(PGSQL_LIBRARY - NAMES ${PGSQL_NAMES} - PATHS ${PGSQL_SEARCH_LIB_PATHS} -) - -IF (PGSQL_INCLUDE_DIR AND PGSQL_LIBRARY) - SET(PGSQL_FOUND TRUE) - SET( PGSQL_LIBRARIES ${PGSQL_LIBRARY} ) -ELSE (PGSQL_INCLUDE_DIR AND PGSQL_LIBRARY) - SET(PGSQL_FOUND FALSE) - SET( PGSQL_LIBRARIES ) -ENDIF (PGSQL_INCLUDE_DIR AND PGSQL_LIBRARY) - -IF (PGSQL_FOUND) - IF (NOT PostgreSQL_FIND_QUIETLY) - MESSAGE(STATUS "Found PostgreSQL: ${PGSQL_LIBRARY}") - ENDIF (NOT PostgreSQL_FIND_QUIETLY) -ELSE (PGSQL_FOUND) - IF (PostgreSQL_FIND_REQUIRED) - MESSAGE(STATUS "Looked for PostgreSQL libraries named ${PGSQL_NAMES}.") - MESSAGE(FATAL_ERROR "Could NOT find PostgreSQL library") - ENDIF (PostgreSQL_FIND_REQUIRED) -ENDIF (PGSQL_FOUND) - -MARK_AS_ADVANCED( - PGSQL_LIBRARY - PGSQL_INCLUDE_DIR -) -ENDMACRO(FIND_PGSQL) - diff --git a/contrib/mysql_to_pgsql/src/defines.h b/contrib/mysql_to_pgsql/src/defines.h deleted file mode 100644 index 3ffaf9923e0..00000000000 --- a/contrib/mysql_to_pgsql/src/defines.h +++ /dev/null @@ -1,184 +0,0 @@ -/* - * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef _DEFINES_ -#define _DEFINES_ - -#ifdef WIN32 -#include <winsock2.h> -#pragma warning(disable:4996) -#endif - -#include <libpq-fe.h> -#include <mysql.h> -#include <string> -#include <vector> -#include <map> -#include <iostream> -#include <sstream> -#include <cstdlib> -#include <string.h> -using namespace std; - - -#ifdef WIN32 -typedef unsigned __int64 uint64; -typedef unsigned int uint32; -#else -#include <stdint.h> -#ifndef uint64_t -#include <linux/types.h> -#endif -typedef uint64_t uint64; -typedef unsigned int uint32; -#endif - -struct sField -{ - string name; // field name - string def; // field default data - string type; // field type - uint32 flags; // filed flags, see field flags; -}; -typedef vector<sField> T_Table; -typedef vector<string> T_TableList; -typedef map< string, T_Table > TDataBase; - -static -void pg_notice(void *arg, const char *message) -{ - /// Do nothing - //printf("%s\n", message); -} - -inline -string ConvertNativeType(enum_field_types mysqlType, uint32 length) -{ - - switch (mysqlType) - { - case FIELD_TYPE_TIMESTAMP: - return "timestamp"; - case FIELD_TYPE_BIT: - return "bit(1)"; - case FIELD_TYPE_DATETIME: - return "date"; - case FIELD_TYPE_YEAR: - case FIELD_TYPE_BLOB: - case FIELD_TYPE_SET: - case FIELD_TYPE_NULL: - case FIELD_TYPE_ENUM: - return "text"; - case FIELD_TYPE_TINY: - case FIELD_TYPE_SHORT: - case FIELD_TYPE_INT24: - return "integer"; - case FIELD_TYPE_LONGLONG: - case FIELD_TYPE_LONG: - { - string temp; - char str[10]; - temp = "numeric"; - if (length) - { - temp.append("("); - sprintf(str,"%d",length); - temp.append(str); - temp.append(")"); - } - return temp; - } - case FIELD_TYPE_DECIMAL: - case FIELD_TYPE_FLOAT: - case FIELD_TYPE_DOUBLE: - return "float"; - case FIELD_TYPE_STRING: - { - string temp; - char str[10]; - temp = "char"; - if (length) - { - temp.append("("); - sprintf(str,"%d",length); - temp.append(str); - temp.append(")"); - } - return temp; - } - case FIELD_TYPE_VAR_STRING: - { - string temp; - char str[10]; - temp = "varchar"; - if (length) - { - temp.append("("); - sprintf(str,"%d",length); - temp.append(str); - temp.append(")"); - } - return temp; - } - default: - return "text"; - } - return "text"; -} - -inline -bool IsNeeedEscapeString(enum_field_types mysqlType) -{ - switch(mysqlType) - { - case FIELD_TYPE_VAR_STRING: - case FIELD_TYPE_STRING: - case FIELD_TYPE_TINY_BLOB: - case FIELD_TYPE_MEDIUM_BLOB: - case FIELD_TYPE_LONG_BLOB: - case FIELD_TYPE_BLOB: - return true; - default: - return false; - } - return false; -} - -inline -void PG_Exec_str(string sql, PGconn *mPGconn) -{ - PGresult *res = PQexec (mPGconn, sql.c_str()); - if (PQresultStatus(res) != PGRES_COMMAND_OK) - { - printf( "SQL: %s", sql.c_str() ); - printf( "SQL %s", PQerrorMessage(mPGconn) ); - } -} - -void PG_Escape_Str(string& str) -{ - if(str.empty()) - return; - char* buf = new char[str.size()*2+1]; - PQescapeString(buf,str.c_str(),str.size()); - str = buf; - delete[] buf; -} - -#endif - diff --git a/contrib/mysql_to_pgsql/src/main.cpp b/contrib/mysql_to_pgsql/src/main.cpp deleted file mode 100644 index 8ca6772de20..00000000000 --- a/contrib/mysql_to_pgsql/src/main.cpp +++ /dev/null @@ -1,339 +0,0 @@ -/* - * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "defines.h" - -int main(int argc, char* argv[]) -{ - char sPGhost[26], sPGport[26], sPGdb[26], sPGuser[26], sPGpass[26]; - printf("Postgres connection settings\n Host>"); - scanf("%s",sPGhost); - printf(" Port>"); - scanf("%s",sPGport); - printf(" Base>"); - scanf("%s",sPGdb); - printf(" User>"); - scanf("%s",sPGuser); - printf(" Pass>"); - scanf("%s",sPGpass); - - /////////////////////////////// - ///////PGSQL Connect/////////// - /////////////////////////////// - PGconn *mPGconn=NULL; - mPGconn = PQsetdbLogin(sPGhost,sPGport, NULL, NULL, sPGdb, sPGuser, sPGpass); - - if (PQstatus(mPGconn) != CONNECTION_OK) - { - printf("Could not connect to Postgre database at [%s]: \n %s\n",sPGhost, PQerrorMessage(mPGconn)); - PQfinish(mPGconn); - return 1; - } - else - { - printf("Connected to Postgre database at [%s]\n", sPGhost); - printf(" PostgreSQL server ver: [%d]\n\n",PQserverVersion(mPGconn)); - } - - /// Set dummy notice processor - PQsetNoticeProcessor(mPGconn, pg_notice, mPGconn); - - /////////////////////////////// - ///////MySQL Connect/////////// - /////////////////////////////// - MYSQL *mysqlInit; - mysqlInit = mysql_init(NULL); - if (!mysqlInit) - { - printf( "Could not initialize Mysql connection\n" ); - return 1; - } - - char sMYhost[26], sMYdb[26], sMYuser[26], sMYpass[26]; - int iMYport; - printf("Mysql connection settings \n Host>"); - scanf("%s",sMYhost); - printf(" Port>"); - scanf("%d",&iMYport); - printf(" Base>"); - scanf("%s",sMYdb); - printf(" User>"); - scanf("%s",sMYuser); - printf(" Pass>"); - scanf("%s",sMYpass); - - mysql_options(mysqlInit,MYSQL_SET_CHARSET_NAME,"utf8"); - - MYSQL *mMysql; - mMysql = mysql_real_connect(mysqlInit, sMYhost, sMYuser, sMYpass, sMYdb, iMYport, NULL, 0); - - if (mMysql) - { - printf( "Connected to MySQL database at [%s] \n", sMYhost); - printf( " MySQL client library: [%s] \n", mysql_get_client_info()); - printf( " MySQL server ver: [%s] \n\n", mysql_get_server_info( mMysql)); - } - else - { - printf("Could not connect to MySQL database at [%s]:\n %s\n", sMYhost ,mysql_error(mysqlInit)); - mysql_close(mysqlInit); - return 1; - } - - ////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// - MYSQL_RES *result = NULL; - MYSQL_ROW row; - MYSQL_FIELD *fields = NULL; - uint64 rowCount = 0; - uint32 fieldCount =0; - result = mysql_list_tables( mMysql , NULL ); - rowCount = mysql_num_rows(result); - - /***********************/ - /* get list of tables */ - /***********************/ - T_TableList mTableList; - mTableList.reserve((size_t)rowCount); - while( (row = mysql_fetch_row(result)) !=NULL ) - { - for (uint32 i = 0;i<mysql_num_fields(result);i++) - { - mTableList.push_back(row[i]); - } - } - mysql_free_result(result); - - /****************************************/ - /* convert filed type and default type */ - /****************************************/ - T_Table m_Table; - TDataBase m_DataBase_Map; - m_DataBase_Map.clear(); - for (uint32 j=0; j<mTableList.size();++j) - { - result = mysql_list_fields(mMysql, mTableList[j].c_str(), NULL); - fieldCount = mysql_num_fields(result); - fields = mysql_fetch_fields(result); - - for (uint32 i=0; i<fieldCount;++i) - { - sField mfield; - mfield.name = fields[i].name; - if (!fields[i].def) - { - mfield.def = "NULL"; - } - else if (!strcmp(fields[i].def,"0000-00-00 00:00:00")) - { - /// Convert MySQL Default timestamp to PGSQL Default timestamp - mfield.def.append("'1970-01-01 00:00:00'"); - } - else - { - /// Append ' - mfield.def.append("'"); - mfield.def.append(fields[i].def);; - mfield.def.append("'"); - } - mfield.type = ConvertNativeType(fields[i].type,fields[i].length); - mfield.flags = fields[i].flags; - m_Table.push_back(mfield); - } - m_DataBase_Map[mTableList[j]] = m_Table; - m_Table.clear(); - mysql_free_result(result); - } - - /******************************************/ - /* Conversion of the layout of the tables */ - /******************************************/ - - uint32 count = 0; - TDataBase::const_iterator citr; - for (citr = m_DataBase_Map.begin(); citr != m_DataBase_Map.end(); ++citr) - { - ostringstream sql_str; - sql_str<<"DROP TABLE IF EXISTS "<<(*citr).first.c_str()<<";\n"; - sql_str<<"CREATE TABLE "<<(*citr).first.c_str()<<"(\n"; - - T_Table::const_iterator v_iter; - ostringstream prim_key_str; - ostringstream index_str; - for (v_iter = (*citr).second.begin(); - v_iter != (*citr).second.end(); - ++v_iter) - { - sql_str<<" "<<(*v_iter).name; - if (((*v_iter).flags & AUTO_INCREMENT_FLAG)!=0) - { - /// AUTO_INCREMENT fields not have "default" data - sql_str<<" bigserial"; - } - else - { - sql_str<<" "<<(*v_iter).type; - sql_str<<" default "<<(*v_iter).def; - } - /// IF column have PRIMARY KEY flag then use column in PRIMARY KEY - if (IS_PRI_KEY( (*v_iter).flags )!=0) - { - if( prim_key_str.str().size()) - prim_key_str << ", "; - else - { - prim_key_str << "ALTER TABLE "; - prim_key_str << (*citr).first.c_str(); - prim_key_str << " ADD CONSTRAINT pk_"; - prim_key_str << (*citr).first.c_str(); - prim_key_str << "_"; - prim_key_str << (*v_iter).name; - prim_key_str << " PRIMARY KEY ("; - } - prim_key_str<<(*v_iter).name; - } - else if (((*v_iter).flags & MULTIPLE_KEY_FLAG)!=0) - { - /// IF column have INDEX flag then create INDEX - index_str << "CREATE INDEX idx_"; - index_str << (*citr).first.c_str(); - index_str << "_"; - index_str << (*v_iter).name; - index_str << " ON "; - index_str << (*citr).first.c_str(); - index_str << " USING btree ("; - index_str << (*v_iter).name; - index_str << ");\n"; - } - else if (((*v_iter).flags & UNIQUE_KEY_FLAG)!=0) - { - /// IF column have UNIQUE INDEX flag then create INDEX - index_str << "CREATE UNIQUE INDEX uidx_"; - index_str << (*citr).first.c_str(); - index_str << "_"; - index_str << (*v_iter).name; - index_str << " ON "; - index_str << (*citr).first.c_str(); - index_str << " USING btree ("; - index_str << (*v_iter).name; - index_str << ");\n"; - } - /// don't output "," for last column - if(v_iter + 1 != (*citr).second.end()) - sql_str<< ",\n"; - else - sql_str<< "\n"; - } - sql_str<< ")\n"; - - /// Out Table structure - PG_Exec_str(sql_str.str(),mPGconn); - - /// out PRIMARY KEY - if(prim_key_str.str().size()) - { - prim_key_str<<")"; - PG_Exec_str(prim_key_str.str(),mPGconn); - } - - /// out INDEX's - if (index_str.str().size()) - PG_Exec_str(index_str.str(),mPGconn); - - ++count; - printf("Convert [%d] tables...\r",count); - } - printf("Completed the conversion of [%d] tables!\n", count); - - /****************/ - /* Copying data */ - /****************/ - - count = 0; - for (uint32 j=0; j<mTableList.size();++j) - { - ostringstream sql_str; - sql_str << "SELECT * FROM "; - sql_str << mTableList[j].c_str(); - - if (mysql_query(mysqlInit,sql_str.str().c_str()) ) - continue; - if (!(result = mysql_store_result(mysqlInit))) - continue; - - while ((row = mysql_fetch_row(result))!=NULL) - { - ostringstream insert_str; - insert_str << "INSERT INTO "; - insert_str << mTableList[j].c_str(); - insert_str << " VALUES ("; - - fieldCount = mysql_num_fields(result); - fields = mysql_fetch_fields(result); - for (uint32 i = 0 ; i < fieldCount ; ++i) - { - if (!row[i]) - insert_str << "NULL"; - else - { - if (IsNeeedEscapeString(fields[i].type)) - { - string field_str = row[i]; - PG_Escape_Str(field_str); - insert_str << "E'"; - insert_str << field_str.c_str(); - insert_str << "'"; - } - else if (!strcmp(row[i],"0000-00-00 00:00:00")) - { - /// Convert MySQL timestamp to PGSQL timestamp - insert_str << "'1970-01-01 00:00:00'"; - } - else - { - insert_str << "'"; - insert_str << row[i]; - insert_str << "'"; - } - } - - /// don't output "," for last column - if(i + 1 != fieldCount ) - insert_str<< ","; - else - insert_str<< ")\n"; - } - PG_Exec_str(insert_str.str(), mPGconn); - } - mysql_free_result(result); - ++count; - printf("Copied data from [%d] tables...\r",count); - } - printf("Finished copying the data from [%d] tables!\n",count); - mTableList.clear(); - m_DataBase_Map.clear(); - - /// Close connections - mysql_close(mMysql); - PQfinish(mPGconn); - - printf("end\n"); - return 0; - -} - |