Написав простецкий скрипт на питоне для копирования данных таблицы с MSSQL в PostgreSQL (+ конвертация некоторых полей) напоролся на ошибку - "psycopg.OperationalError, could not connect to server: Address already in use". Запускал скрипт я на Win32, Python2.6, Psycopg2 2.0.13. Долго ковырял гугль. Нашлась тема. И хотя она оказалась решенной ещё в 2006 году - я эту ошибку всё равно получал. Да, библиотека у меня судя по её номеру - намного "новее"...
Помучав мозг и посмотрев на код работы с psql, я увидел, что для вставки каждой строки данных я каждый раз открываю и закрываю соединение... Вот оно! А что, если открыть соединение 1 раз и кидать инсерты? Да, так и быстрее и не получаю ошибку! (вот в фоне уже 80К строк обработано, только нужно учесть, что я соединился с pgBouncer).
Ну или можно вставить time.sleep(3*60) после каждых 2К строк...
вторник, 26 января 2010 г.
четверг, 21 января 2010 г.
Genius NetScroll 220 Laser | Мышь. Понижение чувствительности.
OMG! Все мучался - мышь ЛЕТАЕТ! Оказалось есть переключение dpi (влияет на чувствительность). Знаете как? ХАХА! Нажатием лк+пк+колеса!
УРА!
УРА!
MSSQL | Подлость. Никогда не доверяйте!
Был обычный день. Настал момент в базе данных у одной таблицы сменить тип с text на ntext. А таблица на 500к строк. И важная - жуть! Ок, Sql managment studio создала скрипт. Интересно, но скрипт создавал временную таблицу, копировал в неё оригинальную, потом дропал оригинальную и переименовывал временную в название оригинала. Вроде - все нормально, все обернуто транзакциями.
Да вот только обернуто то не все вместе, а каждая команда по отдельности! Ну в результате - сначала мешали внешние ключи. А потом просто - оригинальная таблица дропнулась и временной не видно!? ВСЁ!
Прощайте данные!
Да, есть бекап. Ночной. Общий на 50Гиг. Шутки в сторону. Микрософт не научил студию восстанавливать таблицы по одной. Финиш. А точнее - пипец!
Но я умный. У меня есть машина-дублер. Правда она - на постгресе!
В общем поимел я секса с sqlcmd и конвертированием ~300Мегового бекапа в стиле INSERT INTO TABLE. Хорошо что была линукс-машина и хвала vim! Особенно его комманде глобальной замены %s/что_искать/на_что_менять/gn.
Для интереса - sqlcmd работает по стандарту. Т.е. каждая команда должна завершатьсяпинком командой GO. Но кроме того из-за огромного размера - каждый инсерт пришлось обернуть в транзакцию.
Типа:
Ну и конечно же вызов sqlcmd с флагом кодировки -f 65001 (это utf-8).
Всё. Живем.
Да вот только обернуто то не все вместе, а каждая команда по отдельности! Ну в результате - сначала мешали внешние ключи. А потом просто - оригинальная таблица дропнулась и временной не видно!? ВСЁ!
Прощайте данные!
Да, есть бекап. Ночной. Общий на 50Гиг. Шутки в сторону. Микрософт не научил студию восстанавливать таблицы по одной. Финиш. А точнее - пипец!
Но я умный. У меня есть машина-дублер. Правда она - на постгресе!
В общем поимел я секса с sqlcmd и конвертированием ~300Мегового бекапа в стиле INSERT INTO TABLE. Хорошо что была линукс-машина и хвала vim! Особенно его комманде глобальной замены %s/что_искать/на_что_менять/gn.
Для интереса - sqlcmd работает по стандарту. Т.е. каждая команда должна завершаться
Типа:
begin tran; insert into ...; commit tran; go
Ну и конечно же вызов sqlcmd с флагом кодировки -f 65001 (это utf-8).
Всё. Живем.
Подписаться на:
Сообщения (Atom)