1

Тема: Экспорт базы из phpmyadmin в PosgreSLQ? Проблемы

День добрый.

Имеется база в мускуле, нужно ее экспортировать в Posgres. При экспорте в phpmyadmin выбираю режим совместимости (compatibility) с PosgreSQL.
Затем захожу в phpPgAdmin, выполняю SQL запрос с моей базой и получаю ошибки. В итоге ничего не могу импортировать.

Подскажите пожалуйста как экспортировать базу, чтоб потом удачно ее импортировать в phpPgAdmin?

2

Re: Экспорт базы из phpmyadmin в PosgreSLQ? Проблемы

coolerinc
Ошибки какого плана?

3

Re: Экспорт базы из phpmyadmin в PosgreSLQ? Проблемы

Ошибка SQL:

ERROR:  syntax error at or near "(" at character 392

В операторе:

-- phpMyAdmin SQL Dump
-- version 2.10.0.2
-- http://www.phpmyadmin.net
--
-- Хост: хост_базы_данных
-- Время создания: Мар 30 2007 г., 13:35
-- Версия сервера: 5.0.32
-- Версия PHP: 5.2.0-8+etch1

--
-- База данных: `моя_база`
--

-- --------------------------------------------------------

--
-- Структура таблицы `access`
--

CREATE TABLE "access" (
  "aid" int(11) NOT NULL,
  "mask" varchar(255) NOT NULL default '',
  "type" varchar(255) NOT NULL default '',
  "status" tinyint(2) NOT NULL default '0',
  PRIMARY KEY  ("aid")
) AUTO_INCREMENT=1 ;

--
-- Дамп данных таблицы `access`
--


Это я пытался импортировать одну таблицу, пытался выполнить просто
CREATE TABLE "access" (
  "aid" int(11) NOT NULL,
  "mask" varchar(255) NOT NULL default '',
  "type" varchar(255) NOT NULL default '',
  "status" tinyint(2) NOT NULL default '0',
  PRIMARY KEY  ("aid")
) AUTO_INCREMENT=1 ;

те же ошибки валятся. Экспортировал с установками по дефолту, кроме режима совместимости.

4

Re: Экспорт базы из phpmyadmin в PosgreSLQ? Проблемы

Не вижу ошибки. А при импортировании дампа в формате MySQL какие-нибудь ошибки вылезают?

Попробуйте убрать строку
PRIMARY KEY  ("aid")
без нее импортируется?

SQL, он и есть SQL, такие простые структуры должны импортироваться вне зависимости от сервера БД.

5

Re: Экспорт базы из phpmyadmin в PosgreSLQ? Проблемы

Попробовал без PRIMARY KEY  ("aid")

Ошибка SQL:

ERROR:  syntax error at or near "`" at character 14

В операторе:

CREATE TABLE `access` (
  `aid` int(11) NOT NULL auto_increment,
  `mask` varchar(255) NOT NULL default '',
  `type` varchar(255) NOT NULL default '',
  `status` tinyint(2) NOT NULL default '0',
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


Кстати были такие-же проблемы, когда пытался импортировать дамп в мускуль. Проблему решил путем Sypex Dumper'а, а как быть с PostgreSQL, есть ли аналогичные дамперы для постгреса?

6

Re: Экспорт базы из phpmyadmin в PosgreSLQ? Проблемы

coolerinc
Нет, надо было дамп в формате Postgres редактировать, а не MySQL. Такие вещи, как косые кавычки и Enginе=Myisam, он все равно не поймет.

Вот, что еще подумал, а разве слоник понимает int(), у него вроде integer используется.

7 (изменено: coolerinc, 2007-04-04 15:44:48)

Re: Экспорт базы из phpmyadmin в PosgreSLQ? Проблемы

Экспортировал в режиме совместимости, удалил PRIMARY KEY  ("aid"), таже беда sad

Ошибка SQL:

ERROR:  syntax error at or near "(" at character 37

В операторе:

CREATE TABLE "access" (
  "aid" int(11) NOT NULL,
  "mask" varchar(255) NOT NULL default '',
  "type" varchar(255) NOT NULL default '',
  "status" tinyint(2) NOT NULL default '0',
) AUTO_INCREMENT=1 ;



Может я что-то делаю не так?
Я захожу в phppgadmin, выбираю свою базу, sql, дальше вставляю отэкспортированный текст таблицы.

По поводу int() ничего сказать не могу т.к. не сильно в этом разбираюсь.

8

Re: Экспорт базы из phpmyadmin в PosgreSLQ? Проблемы

Попробуйте такой запрос.

CREATE TABLE "access" (
  "aid" integer NOT NULL,
  "mask" varchar(255) NOT NULL default '',
  "type" varchar(255) NOT NULL default '',
  "status" smallint NOT NULL default '0',
  PRIMARY KEY  ("aid")
) AUTO_INCREMENT=1 ;

9

Re: Экспорт базы из phpmyadmin в PosgreSLQ? Проблемы

Ошибка SQL:

ERROR:  syntax error at or near "AUTO_INCREMENT" at character 210

В операторе:

CREATE TABLE "access" (
  "aid" integer NOT NULL,
  "mask" varchar(255) NOT NULL default '',
  "type" varchar(255) NOT NULL default '',
  "status" smallint NOT NULL default '0',
  PRIMARY KEY  ("aid")
) AUTO_INCREMENT=1 ;

10

Re: Экспорт базы из phpmyadmin в PosgreSLQ? Проблемы

coolerinc
М-да... Ерунда какая-то. Экспорт в формат Postgres не работает. Если можно, укажите используемую вами версию Postgres. По возможности, будем разбираться.

Это должно рабоать, но правильнее создавать CREATE SEQUENCE.

CREATE TABLE "access" (
  "aid" serial NOT NULL,
  "mask" varchar(255) NOT NULL default '',
  "type" varchar(255) NOT NULL default '',
  "status" smallint NOT NULL default '0',
  PRIMARY KEY  ("aid")
);

11

Re: Экспорт базы из phpmyadmin в PosgreSLQ? Проблемы

phpPgAdmin 4.1.1 (PHP 5.2.0-8+etch1)
PostgreSQL 8.1.8
кодировка в utf8

12

Re: Экспорт базы из phpmyadmin в PosgreSLQ? Проблемы

Кстати Hanut, последний запрос сработал

CREATE TABLE "access" (
  "aid" serial NOT NULL,
  "mask" varchar(255) NOT NULL default '',
  "type" varchar(255) NOT NULL default '',
  "status" smallint NOT NULL default '0',
  PRIMARY KEY  ("aid")
);

только у меня еще 169 таблиц общим объемом мегабайт 15, не править же их руками каждый раз?

13

Re: Экспорт базы из phpmyadmin в PosgreSLQ? Проблемы

Самым простым я вижу конвертацию из формата MySQL в PostgreSQL с помощью перлового скрипта.
http://www.postgresql.org/docs/techdocs.3.html

Как только появится возможность, будем разбираться с экспортом из phpMyAdmin в формат PostgreSQL.

Если у вас будут затруднения или дополнительные вопросы, обращайтесь, постараемся помочь.

14

Re: Экспорт базы из phpmyadmin в PosgreSLQ? Проблемы

Спасибо за помощь, буду разбираться smile

15

Re: Экспорт базы из phpmyadmin в PosgreSLQ? Проблемы

Дело - труба. phpMyAdmin в данном случае не при чем, так как для экспорта в формат PostgreSQL используется соответствующий режим MySQL, который почему-то не работает, как надо.

Статья по данной проблеме: http://sourceforge.net/tracker/index.ph … tid=377408

Марк поступил правильно, и просто выключил в готовящейся версии 2.10.1 возможность экспорта в формат PostgreSQL, до тех пор, пока разработчики MySQL не обратят внимание на эту проблему.

По идее можно было решить задачу конвертирования средствами скрипта, но сейчас есть более насущные проблемы, поэтому остается только ждать.

16

Re: Экспорт базы из phpmyadmin в PosgreSLQ? Проблемы

Понятно.
Начал пробовать скрипты, в частности mysql2pgsql.perl, посыпались ошибки.
Переконвертацию делал таким образом (Ubuntu 6.06):

perl mysql2pgsql.perl mysqldump.sql pgsqldump.sql

Начал с одной таблицы, самой маленькой. При экспорте получил это:

-- phpMyAdmin SQL Dump
-- version 2.10.0.2
-- http://www.phpmyadmin.net
-- 
-- Хост: *******************
-- Время создания: Апр 06 2007 г., 12:17
-- Версия сервера: 5.0.32
-- Версия PHP: 5.2.0-8+etch1

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

-- 
-- База данных: `************`
-- 

-- --------------------------------------------------------

-- 
-- Структура таблицы `access`
-- 

CREATE TABLE `access` (
  `aid` int(11) NOT NULL auto_increment,
  `mask` varchar(255) NOT NULL default '',
  `type` varchar(255) NOT NULL default '',
  `status` tinyint(2) NOT NULL default '0',
  PRIMARY KEY  (`aid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

-- 
-- Дамп данных таблицы `access`
--

При исполнении SQL получил это:

Ошибка SQL:

ERROR:  syntax error at or near "`" at character 410

В операторе:

-- phpMyAdmin SQL Dump
-- version 2.10.0.2
-- http://www.phpmyadmin.net
-- 
-- Хост: ******************
-- Время создания: Апр 06 2007 г., 12:17
-- Версия сервера: 5.0.32
-- Версия PHP: 5.2.0-8+etch1

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

-- 
-- База данных: `**********`
-- 

-- --------------------------------------------------------

-- 
-- Структура таблицы `access`
-- 

CREATE TABLE `access` (
  `aid` int(11) NOT NULL auto_increment,
  `mask` varchar(255) NOT NULL default '',
  `type` varchar(255) NOT NULL default '',
  `status` tinyint(2) NOT NULL default '0',
  PRIMARY KEY  (`aid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

-- 
-- Дамп данных таблицы `access`
--

Непонятно sad

17

Re: Экспорт базы из phpmyadmin в PosgreSLQ? Проблемы

coolerinc
А где то что получилось после конвертации? Что-то не понял.

Сейчас вы импортируете дамп в формате MySQL. Вы уверены, что перл-интерпритатор понимает расширение .perl?

18

Re: Экспорт базы из phpmyadmin в PosgreSLQ? Проблемы

Вот что получилось после конвертации:

-- phpMyAdmin SQL Dump
-- version 2.10.0.2
-- http://www.phpmyadmin.net
-- 
-- Хост: *******************
-- Время создания: Апр 06 2007 г., 12:17
-- Версия сервера: 5.0.32
-- Версия PHP: 5.2.0-8+etch1

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

-- 
-- База данных: `************`
-- 

-- --------------------------------------------------------

-- 
-- Структура таблицы `access`
-- 

CREATE TABLE `access` (
  `aid` int(11) NOT NULL auto_increment,
  `mask` varchar(255) NOT NULL default '',
  `type` varchar(255) NOT NULL default '',
  `status` tinyint(2) NOT NULL default '0',
  PRIMARY KEY  (`aid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

-- 
-- Дамп данных таблицы `access`
--

Конвертацию делал как указано в документации т.е. в терминале набираю

perl mysql2pgsql.perl mysqldump.sql pgsqldump.sql

, после чего можно наблюдать процесс конвертации (бегут цифры, никаких еррор'ов)

19

Re: Экспорт базы из phpmyadmin в PosgreSLQ? Проблемы

Ничего в дампе не изменилось - значит что-то не так. С этим перловым скриптом я помочь не могу, пока. Постарайтесь разобраться сами.