2012-04-17 6 views
0

У меня есть требование, когда мне нужно вставить данные postgres в mysql. Предположим, у меня есть пользовательская таблица в postgres. У меня есть таблица пользователя в mysql. Я пытался сделать что-то вроде этого:Импорт данных postgres в mysql

gts = 'cd '+js_browse[0].js_path #gts prints correct folder name/usr/local/myfolder_name 
os.system(gts) 
gts_home = 'export GTS_HOME='+js_browse[0].js_path 
os.system(gts_home) 
tt=gts+'&& sh bin/admin.sh User --input-dir /tmp/import' 
#inside temp/import i import store my postgres user table data 
#bin is the folder inside myfolder_name 

В MySQL, если я использую команду он работает прекрасно:

cd /usr/local/myfolder_name 
bin/admin.sh User -account=1 user=hamid -create' 

Я не могу хранить данные внутри MySQL таким образом. Любая помощь должна быть оценена.

+0

Это одно время или вам нужен сценарий, чтобы вы могли повторить копирование/передачу/импорт данных? Я могу только догадываться, что admin.sh - это сценарий оболочки, который использует свои аргументы для выполнения определенных операций, таких как создание пользователя (что похоже на ваш пример). Вы надеетесь изменить admin.sh, чтобы делать что-то с базами данных mysql и postgres? Как admin.sh определяет, к какой базе данных подключиться? Можете ли вы успешно сохранить данные пользователя в temp/import? – ghbarratt

+0

Мне нужен этот скрипт для запуска каждый раз, когда я создаю нового пользователя в postgres.yes, мои данные хранятся в temp/import. –

+0

Итак, что вы на самом деле хотите сделать в этот момент - получить данные, собранные в temp/import в базе данных MySQL, правильно? Я предполагаю, что в идеале вы сделаете это через тот же скрипт python, который вы используете для извлечения данных из db Postgres. Я думаю, что ваши варианты в этом случае будут такими, как [MySQLdb] (http://stackoverflow.com/questions/372885/how-do-i-connect-to-a-mysql-database-in-python) или [ mysql command] (http://stackoverflow.com/questions/6730111/how-to-execute-large-mysql-data-insert-script-file-using-command-line-in-windows) – ghbarratt

ответ

1

Вы действительно не даете нам много информации. И почему бы перейти от postgres к mysql?

Но вы можете использовать один из этих инструментов - я видел, как люди говорят хорошо о них

pg2mysql или pgs2sql

Надеются, что это работает.

+0

Причина, по которой я буду перейти от postgres к mysql - это то, что у меня есть два приложения, которые работают на постгресах, а другое - на mysql.need для передачи данных frm один в другой. –

+0

Я понимаю. Но я предпочел бы перейти от mysql к postgres. У меня тоже нет больших знаний, но postgres кажется более новым, более надежным и несколько быстрее. Итак, почему бы не перейти от mysql к postgres? – Mads

+0

Мне нужно только получить данные из таблицы postgres (например, таблицу пользователя) и вставить ее в таблицу mysql (здесь снова таблица пользователя). Мне не нужен инструмент преобразования. –

1

PostgreSQL предоставляет возможность сбрасывать данные в формате CSV с помощью команды COPY.

Самый простой путь для вас - потратить время на копирование объектов схемы из PostgreSQL в MySQL, вы можете использовать для этого на стороне PostgreSQL. ИМХО, это будет самая большая проблема для правильного перемещения схем.

И тогда вы должны импортировать отсканированные данные в формате CSV в MySQL, check this для справки. Перейдя к комментариям, вы также найдете рецепты для Windows. Что-то вроде этого должно сделать трюк (соответственно отрегулируйте параметры):

LOAD DATA LOCAL INFILE C:\test.csv 
INTO TABLE tbl_temp_data 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n'; 
Смежные вопросы