diff --git a/contrib/mysql_to_pgsql/CMakeLists.txt b/contrib/mysql_to_pgsql/CMakeLists.txt
new file mode 100644
index 000000000..490a023e4
--- /dev/null
+++ b/contrib/mysql_to_pgsql/CMakeLists.txt
@@ -0,0 +1,21 @@
+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
new file mode 100644
index 000000000..bf7083fb6
--- /dev/null
+++ b/contrib/mysql_to_pgsql/README
@@ -0,0 +1,14 @@
+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
new file mode 100644
index 000000000..e7d158de2
--- /dev/null
+++ b/contrib/mysql_to_pgsql/cmake/FindMySQL.cmake
@@ -0,0 +1,74 @@
+# - 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)
\ No newline at end of file
diff --git a/contrib/mysql_to_pgsql/cmake/FindPostgreSQL.cmake b/contrib/mysql_to_pgsql/cmake/FindPostgreSQL.cmake
new file mode 100644
index 000000000..06a1adc9e
--- /dev/null
+++ b/contrib/mysql_to_pgsql/cmake/FindPostgreSQL.cmake
@@ -0,0 +1,82 @@
+# - 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
new file mode 100644
index 000000000..662a7aab2
--- /dev/null
+++ b/contrib/mysql_to_pgsql/src/defines.h
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2005-2009 MaNGOS
+ *
+ * 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
+#pragma warning(disable:4996)
+#endif
+
+#include
+#include
+#include
+#include
+#include