<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - Kopiowanie danych z Oracle]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=251&amp;type=atom"/>
	<updated>2009-07-15T11:14:54Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=251</id>
		<entry>
			<title type="html"><![CDATA[Odp: Kopiowanie danych z Oracle]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1058#p1058"/>
			<content type="html"><![CDATA[$pole=mb_convert_encoding($row[4],'Latin2','UTF-8');

win1250 jest nieobsługiwane, wcześniej wkleiłem linie z moich prób, teraz jest ok

Mam nadzieję, że komuś się przyda]]></content>
			<author>
				<name><![CDATA[adamleon]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=873</uri>
			</author>
			<updated>2009-07-15T11:14:54Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1058#p1058</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Kopiowanie danych z Oracle]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1057#p1057"/>
			<content type="html"><![CDATA[Zmieniałem apostrof nie kropkę :/]]></content>
			<author>
				<name><![CDATA[adamleon]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=873</uri>
			</author>
			<updated>2009-07-15T11:08:36Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1057#p1057</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Kopiowanie danych z Oracle]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1056#p1056"/>
			<content type="html"><![CDATA[Witam
Rozwiązałem problem, musiałem przekonwertować pole funkcją PHP i zamienić kropkę i basckslash ponieważ stanowiły problem

Jeżeli ktoś ma inny pomysł to niech zaprezentuje

$stmt = $pdo -> query("select numer,to_char(REGD,'YYYY-MM-DD'),to_char(plans,'YYYY-MM-DD'),
                        to_char(planf,'YYYY-MM-DD'),err_descr
                        from tabela");               
while($row = $stmt->fetch(PDO::FETCH_NUM))
{
           $pole=mb_convert_encoding($row[4],'win1250','UTF-8');
	$pole=str_replace("\\",'-',str_replace("'",'-',$pole));        
$stmp=$conn->query("INSERT INTO tabela1 (numer,reg_date,plan_s,plan_f,err_descr) VALUES
($row[0],to_date('$row[1]','YYYY-MM-DD'),to_date('$row[2]','YYYY-MM-DD'),to_date('$row[3]','YYYY-MM-DD'),'$pole')");
                       
                       
        echo $row[0].' -- '. $row[1].' -- '. $row[2].' -- '. $row[3].' -- '. $row[4].'<br>';
}]]></content>
			<author>
				<name><![CDATA[adamleon]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=873</uri>
			</author>
			<updated>2009-07-15T11:06:43Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1056#p1056</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Kopiowanie danych z Oracle]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1055#p1055"/>
			<content type="html"><![CDATA[Witam
Mam taki problem, jest tabela w Oracle ok 500 tys. rekordów. Potrzebuję zrobić bazę na Postgresql 8.3 aby to niej dopisywać dane i porównywać je z tabelą Oracle. Wymyśliłem sobie, że będę najpierw usuwał skopiowane dane z Oracle w Postgresie, a następnie spowrotem kopiował dane z Oracle do Postgresa np: codziennie po godz. 16 (aby dane zmienione w Oracle były prawie aktualne w Postgresie). Łączę się z Oracle i Postgres za pomocą PDO poniżej fragment kodu kopiującego. Problem w tym, że pole err_descr powoduje błąd sa tam polskie znaki - 
Character not in repertoire: 7 ERROR: invalid byte sequence for encoding "UTF8": 0xbf HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".

Bez tego pola ładnie się kopiują dane.

Baza w Postgres jest kodowana UTF-8, zrobiłem też na win1250, ale to  nie pomaga.
Kiedy w PHP konweruję pole $row[4] na  $pole=iconv("Win1250", "UTF-8", $row[4]); to mam taki błąd:

Syntax error: 7 ERROR: syntax error at or near ")" LINE 3: )) ^

conversja np: convert z Postgresql nie pomaga

Nie sprawdzałem COPY z postgres, ale tworzenie pliku z tyloma rekordami trochę mi się nie widzi, wydaje mi się że kopiowanie w locie będzie lepsze. Może ktoś się wypowie na ten temat.

Mam nadzieję że ktoś mnie zrozumie i mi pomoże
Z góry dzięki za pomoc

$stmt = $pdo -> query("select numer,to_char(REGD,'YYYY-MM-DD'),to_char(plans,'YYYY-MM-DD'), 
						to_char(planf,'YYYY-MM-DD'),err_descr
						from tabela");				
while($row = $stmt->fetch(PDO::FETCH_NUM))
{
					
$stmp=$conn->query("INSERT INTO tabela1 (numer,reg_date,plan_s,plan_f,err_descr) VALUES 
($row[0],to_date('$row[1]','YYYY-MM-DD'),to_date('$row[2]','YYYY-MM-DD'),to_date('$row[3]','YYYY-MM-DD'),$row[4])");
						
						
		echo $row[0].' -- '. $row[1].' -- '. $row[2].' -- '. $row[3].' -- '. $row[4].'<br>';
 }]]></content>
			<author>
				<name><![CDATA[adamleon]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=873</uri>
			</author>
			<updated>2009-07-15T05:32:00Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1055#p1055</id>
		</entry>
</feed>
