Теперь посмотрим реализацию на практике измерения температуры.
(далее…)
2009-08-13
ADuC847, его ADC и измерение температуры с термопары (часть 2: практика)
2009-05-06
my2pg.pl: продолжение
как выяснилось, одного фикса с ` ему мало.
Еще обнаруженные проблемы:
1. В после конверсии INSERT в COPY числа с плавающей точкой (1.0 например) превращаются в две колонки. Бред тот еще. Лечится правкой $colRe:
my $colRe = qr/(?:'[^'\\]*(?:\\.[^'\\]*)*'|[\w.+-]+)/;
2. DROP TABLE IF EXISTS оставляет после себя висящую «;». Мелочь, а неприятно. Заодно остаются USE …; LOCK и UNLOCK…
Вылечилось заменой блока дропа на:
s/^DROP\s+TABLE\s+IF\s+EXISTS([^;]+);//; # remove USE database; s/^USE\s([^;]+);$//; # remove LOCK & UNLOCK clauses s/^(UN)?LOCK TABLES[^;]*;$//; # remove mysql-specific comments s/^\/\*![0-9]+ .*?\*\/;$//;
3. ENUM тип теперь поддерживается нативно, а потому сишный код для него лишний. Выкинута вся генерация .cшки относительно этого типа, и перед s/enum… воткнуто
$types .= "CREATE TYPE $typename AS ENUM ('".join("','",@item)."');\n";
4. Ну и как писано выше –
s/`//g;
после
if($tabledef) {
Взять поправленную версию можно тут: my2pg-133
Дополнение: так же обнаружились проблемы с импортом NULL полей и добавлена обработка ON UPDATE CURRENT_TIMESTAMP.
2009-05-05
Попробуем оживить блог работой.
Что ж, попробую запустить блог полезными записями..
Сегодня понадобилось отконвертить дамп из мускула для скармливания pgsql’ю. Лёгкий гуглинг в момент нашел скрипт my2pg.pl, однако он сломался на первом же: бэк-тики в названиях (`field`).
Фикс оказался самым простейшим, после
if($tabledef) {
воткнуть
s/[`]//g;