<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - Kopiowanie danych z Oracle]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=251</link>
		<description><![CDATA[Najświeższe odpowiedzi w Kopiowanie danych z Oracle.]]></description>
		<lastBuildDate>Wed, 15 Jul 2009 11:14:54 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: Kopiowanie danych z Oracle]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1058#p1058</link>
			<description><![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]]></description>
			<author><![CDATA[dummy@example.com (adamleon)]]></author>
			<pubDate>Wed, 15 Jul 2009 11:14:54 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1058#p1058</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Kopiowanie danych z Oracle]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1057#p1057</link>
			<description><![CDATA[Zmieniałem apostrof nie kropkę :/]]></description>
			<author><![CDATA[dummy@example.com (adamleon)]]></author>
			<pubDate>Wed, 15 Jul 2009 11:08:36 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1057#p1057</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Kopiowanie danych z Oracle]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1056#p1056</link>
			<description><![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>';
}]]></description>
			<author><![CDATA[dummy@example.com (adamleon)]]></author>
			<pubDate>Wed, 15 Jul 2009 11:06:43 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1056#p1056</guid>
		</item>
		<item>
			<title><![CDATA[Kopiowanie danych z Oracle]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1055#p1055</link>
			<description><![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>';
 }]]></description>
			<author><![CDATA[dummy@example.com (adamleon)]]></author>
			<pubDate>Wed, 15 Jul 2009 05:32:00 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1055#p1055</guid>
		</item>
	</channel>
</rss>
