<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - Wyniki eksporty przy pomocy COPY]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=1196&amp;type=atom"/>
	<updated>2012-01-17T15:20:04Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=1196</id>
		<entry>
			<title type="html"><![CDATA[Odp: Wyniki eksporty przy pomocy COPY]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=3356#p3356"/>
			<content type="html"><![CDATA[Jeżeli bardzo Ci zależy na tym, żeby COPY samo z siebie dodawało zakończenie linii jako "\r\n" to zawsze można przerobić Postgresa pod swoje potrzeby. Odpowiedni kod znajdziesz w src/backend/commands/copy.c:

[code]                /* Default line termination depends on platform */
#ifndef WIN32
                CopySendChar(cstate, '\n');
#else
                CopySendString(cstate, "\r\n");
#endif[/code]

Ew. można by dodać opcję np. EOL [AS]. dzięki, której bezpośrednio w COPY określisz jaką chcesz końcówkę np.:

[code]Copy (Select 1,2,3 From tabela Where cos In (1,2,3,4,5)) To katalog/plik With Csv Delimiter ';' Eol E'\r\n'[/code]

Wydaje się jednak, że wystarczyłby do tego zewnętrzne narzędzie (dla Windows może coś takiego jak [url]http://www.softpedia.com/get/System/System-Miscellaneous/End-of-Line-Converter.shtml[/url] ?), albo dopasowanie samego programu.]]></content>
			<author>
				<name><![CDATA[gszpetkowski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1223</uri>
			</author>
			<updated>2012-01-17T15:20:04Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=3356#p3356</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Wyniki eksporty przy pomocy COPY]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=3355#p3355"/>
			<content type="html"><![CDATA[Tylko jest taka sprawa że program działa na windowsie a baza stoi na linuxie. Nie mam pomysłu jak mozna to by było załatwić żeby mi się ten plik generował tak jak bym chciał


[quote=gszpetkowski]sed to standardowe narzędzie dostępne w "dobrych pochodnych Unix'a", które służy do przetwarzania danych tekstowych (nie jest związane stricte z PostgreSQL, ale niezmiernie przydatne), bez problemu możesz nim zamienić końcówki linii po wykonaniu COPY (ew. Perl'em, ale to już był zbyt duży kaliber). Zgadza się, notatnik z Windows wymaga, aby koniec linii był jako powrót karetki oraz znak nowej linii.[/quote]]]></content>
			<author>
				<name><![CDATA[hifek]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1253</uri>
			</author>
			<updated>2012-01-16T20:21:29Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=3355#p3355</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Wyniki eksporty przy pomocy COPY]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=3352#p3352"/>
			<content type="html"><![CDATA[sed to standardowe narzędzie dostępne w "dobrych pochodnych Unix'a", które służy do przetwarzania danych tekstowych (nie jest związane stricte z PostgreSQL, ale niezmiernie przydatne), bez problemu możesz nim zamienić końcówki linii po wykonaniu COPY (ew. Perl'em, ale to już był zbyt duży kaliber). Zgadza się, notatnik z Windows wymaga, aby koniec linii był jako powrót karetki oraz znak nowej linii.]]></content>
			<author>
				<name><![CDATA[gszpetkowski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1223</uri>
			</author>
			<updated>2012-01-12T23:43:52Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=3352#p3352</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Wyniki eksporty przy pomocy COPY]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=3351#p3351"/>
			<content type="html"><![CDATA[Problem jest taki że ten wyeksportowany muszę zaimportować przez www i właśnie na końcu linii się wszystko rozpada. Otwierając plik w samym notatniku muszę widzieć podział na linie. A bez tego E'\r\n' mam wszystkie linie zlane w jedną. 

Jeszcze za dobrze postgresa nie znam i może się głupio zapytam: co to jest ten sed?


[quote=gszpetkowski]Najprościej byłoby pominąć E'\r\n', copy samo doda odpowiedni znak końca lini:

[quote]COPY TO will terminate each row with a Unix-style newline ("\n"). Servers running on Microsoft Windows instead output carriage return/newline ("\r\n"), but only for COPY to a server file; for consistency across platforms, COPY TO STDOUT always sends "\n" regardless of server platform.[/quote]

Jeżeli mimo powyższego zamiast "\n" potrzebujesz końcówki jako "\r\n", to samo copy nie daje takie opcji, ale zawsze można użyć np. sed'a.[/quote]]]></content>
			<author>
				<name><![CDATA[hifek]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1253</uri>
			</author>
			<updated>2012-01-12T20:50:38Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=3351#p3351</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Wyniki eksporty przy pomocy COPY]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=3349#p3349"/>
			<content type="html"><![CDATA[Najprościej byłoby pominąć E'\r\n', copy samo doda odpowiedni znak końca lini:

[quote]COPY TO will terminate each row with a Unix-style newline ("\n"). Servers running on Microsoft Windows instead output carriage return/newline ("\r\n"), but only for COPY to a server file; for consistency across platforms, COPY TO STDOUT always sends "\n" regardless of server platform.[/quote]

Jeżeli mimo powyższego zamiast "\n" potrzebujesz końcówki jako "\r\n", to samo copy nie daje takie opcji, ale zawsze można użyć np. sed'a.]]></content>
			<author>
				<name><![CDATA[gszpetkowski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1223</uri>
			</author>
			<updated>2012-01-12T15:59:58Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=3349#p3349</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Wyniki eksporty przy pomocy COPY]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=3348#p3348"/>
			<content type="html"><![CDATA[Mam taki eksport do pliku csv spod bazy:

copy (select 1,2,3, E'\r\n' from tabela where cos in (1,2,3,4,5) to katalog/plik with csv delimiter ';'. 

Jak wykonuję to to otrzymuję dane w postaci:

1;2;3,"
"1;2;3"
"1;2;3"
"1;2;3"
"

Chciałbym te puste pole tekstowe pominąć, czyli otrzymać wynik w takiej postaci w pliku:

1;2;3
1;2;3
1;2;3
1;2;3

Z góry dzięki za pomoc. Pozdrawiam]]></content>
			<author>
				<name><![CDATA[hifek]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1253</uri>
			</author>
			<updated>2012-01-12T14:48:42Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=3348#p3348</id>
		</entry>
</feed>
