aboutsummaryrefslogtreecommitdiff
path: root/contrib/mysql_to_pgsql
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/mysql_to_pgsql')
-rw-r--r--contrib/mysql_to_pgsql/CMakeLists.txt21
-rw-r--r--contrib/mysql_to_pgsql/README14
-rw-r--r--contrib/mysql_to_pgsql/cmake/FindMySQL.cmake74
-rw-r--r--contrib/mysql_to_pgsql/cmake/FindPostgreSQL.cmake82
-rw-r--r--contrib/mysql_to_pgsql/src/defines.h184
-rw-r--r--contrib/mysql_to_pgsql/src/main.cpp339
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;
-
-}
-