Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> добавление данных из dbf в postgresql, не коректно добавляет иформмацию 
V
    Опции темы
izver84
Дата 28.10.2009, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 302
Регистрация: 5.11.2007

Репутация: нет
Всего: 1



Здрасте.
Есть дбф dats файл.
мне надо перенести данные из дбф в postgresl.
Код


use DBI;

# имя базы данных
$dbname = "sbit";
# имя пользователя
$username = "postgres";
# пароль
$password = "syrus";
# имя или IP адрес сервера
$dbhost = "192.168.4.30";
# порт
$dbport = "5432";
# терминал
$dbtty = "utf8";
#путь к файлам дбф
$Base="s:/molds/copy";
#подключение ODBC
my $DSN = 'driver=Microsoft dBase Driver (*.dbf);dbq='.$Base;
$dbf = DBI->connect("dbi:ODBC:$DSN", '','') or die "$DBI::errstr\n";
#подключение PgPP
$dbh = DBI->connect("dbi:PgPP:dbname=$dbname;host=$dbhost;port=$dbport;tty=$dbtty","$username","$password",
            {PrintError => 0});

if ($DBI::err != 0) {
  print $DBI::errstr . "\n";
  exit($DBI::err);
}
#запрос к дбф
$QW="select dats from dats";
$st_dbf = $dbf->prepare($QW) or die "Prepare: ", $dbf->errstr;
$st_dbf->execute or die "Executing: ", $st_dbf->errstr;
#-------------------
#запись результата запроса в массив
@st=();
while ( @row = $st_dbf->fetchrow_array )
{
 foreach $st(@row)
 {
  push(@st,$st."\t");
#печать элемента массива
  print "$st\t";  -выдает 091014


 }

это работает
дальше выполняю  sql команду
Код

$qw="Insert into datsspr (dats1)values($st[0])";
print $qw;-Insert into datsspr (dats1)values(091014            )
$pgb = $dbh->prepare($qw) or die "Prepare: $qw", $dbh->errstr;
$pgb->execute or die "Executing: $qw", $pgb->errstr;
}
$pgb->finish;
$st_dbf->finish;
$dbh->disconnect();

insert работает,но вместо '091014'  ставит '91014'.
хотя тип поля в дбф и postgresal char.
почему так не понятно. Помогите пожалуйста.








--------------------
Если новая программа с первого раза компилируется без ошибок, значит, она написана принципиально неправильно. 
PM MAIL   Вверх
ginnie
Дата 28.10.2009, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



izver84, может есть смысл попробовать

Код

$qw="Insert into datsspr (dats1)values('$st[0]')";


т.к. 091014 это число, а не строка.


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
Bulat
Дата 28.10.2009, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 5
Всего: 57



Код

...
print $qw;-Insert into datsspr (dats1)values(?)
....


дальше куришь маны по $pgb -> bind_param(...). в том же DBI.

smile 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
izver84
Дата 4.11.2009, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 302
Регистрация: 5.11.2007

Репутация: нет
Всего: 1





--------------------
Если новая программа с первого раза компилируется без ошибок, значит, она написана принципиально неправильно. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2023 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.