psql: select * ... außer einer spalte
<p>ich suche nach einer einfachen möglichkeit, alle spalten außer einer in psql auszuwählen.</p><p>mit <code>psql</code> meine ich die interaktive befehlszeile.</p><p>ich würde mich über ein tool freuen, das auf <code>*</code> zu einer liste von spaltennamen in anführungszeichen. dann könnte ich die säule entfernen, um sie von hand zu entfernen.</p><p>meine frage betrifft nur die interaktive verwendung von psql. es ist kein duplikat von fragen von personen, die mit dem sql-standard unzufrieden sind und etwas wie "select * -foo" ausführen möchten.</p>
<p>so erhalten sie die liste der spalten in der standardreihenfolge ohne die fehlerhafte spalte:</p><pre><code>select string\_agg(quote\_ident(attname), ', ' order by attnum) from pg\_attribute where attrelid = 'myschema.mytable'::regclass and not attisdropped -- no dropped (dead) columns and attnum &gt; 0 -- no system columns and attname &lt;&gt; 'bad\_column' -- case sensitive! </code></pre><p>oder einfach <code>where attrelid = 'mytable'::regclass</code>, wenn sie darauf vertrauen, dass der suchpfad <a href="https://stackoverflow.com/questions/9067335/how-does-the-search-path-influence-identifier-resolution-and-the-current-schema/9067777#9067777"></a> in das richtige schema aufgelöst wird.</p><p> <a href="http://www.postgresql.org/docs/current/interactive/functions-string.html#functions-string-other"><code>quote\_ident()</code></a> fügt bei bedarf doppelte anführungszeichen hinzu.</p><p>ich habe die gleiche frage <a href="http://www.postgresql.org/message-id/flat/1180483885.536572.84550@q69g2000hsb.googlegroups.com#1180483885.536572.84550@q69g2000hsb.googlegroups.com">2007 auf pgsql-general</a> gestellt. es war damals postgres 8.2. süße erinnerungen ...</p><p>verbunden:</p><ul> <li> <a href="https://stackoverflow.com/a/24089729/939860">so überprüfen sie, ob eine tabelle in einem bestimmten schema vorhanden ist</a> </li> </ul>
Hallo! 
  
Die Lösung findest du in <http://office.microsoft.com/de-de/excel-help/anzeigen-oder-ausblenden-von-spalten-und-zeilen-HP010342574.aspx.>
  
L.G <p>sie können das meiste davon tun, indem sie eine login.sql verwenden. login.sql wird während der - überraschenden - anmeldung ausgeführt und aus ihrem sqlpath oder dem aktuellen verzeichnis geladen. für die beispiele, die sie gegeben haben, haben sie wirklich den schlimmsten fall gewählt.</p><p>problem ist der sqlterminator. was auch immer sie dort eingeben, der schrägstrich wird als kostenloser sql-minator beibehalten. daneben sucht sqlplus zuerst nach dem sqlterminator und führt dies vor dem scannen zum string-terminator durch. ein fehler, wenn sie mich fragen. der schrägstrich kann in einer zeichenfolge verwendet werden, solange er nicht allein in einer separaten zeile steht. sobald sqlplus das als sqlterminator angegebene zeichen findet, ignoriert es alles andere und hört auf zu lesen.</p><p>der schrägstrich kann behandelt werden, solange er nicht alleine in einer zeile steht.</p><p>login.sql enthält:</p><pre><code>prompt run login.sql show sqlterminator show sqlblanklines set sqlblanklines on set sqlterminator ';' show sqlterminator show sqlblanklines prompt ready login.sql set echo on </code></pre><p>leigh.sql enthält:</p><pre><code>insert into t1 values ('fail bc semicolon a;a / '); insert into t1 values ('fail bc solo / aa / '); insert into t1 values ('ok / not solo aa /a '); delete from t1 where a = 'c a/ '; </code></pre><p>führen sie das skript aus:</p><pre><code>sqlplus leigh/leigh@orcl @leigh sql*plus: release 10.2.0.4.0 - production on thu aug 9 22:36:20 2012 copyright (c) 1982, 2007, oracle. all rights reserved. connected to: oracle database 11g enterprise edition release 11.2.0.3.0 - 64bit production with the partitioning, real application clusters, automatic storage management, olap, data mining and real application testing options run login.sql sqlterminator ";" (hex 3b) sqlblanklines off sqlterminator ";" (hex 3b) sqlblanklines on ready login.sql sql&gt; insert into t1 values ('fail bc semicolon 2 a;a 3 / error: ora-01756: quoted string not properly terminated sql&gt; '); sp2-0042: unknown command "')" - rest of line ignored. sql&gt; sql&gt; insert into t1 values ('fail bc solo / 2 3 4 aa 5 / error: ora-01756: quoted string not properly terminated sql&gt; '); sp2-0042: unknown command "')" - rest of line ignored. sql&gt; sql&gt; insert into t1 values ('ok / not solo 2 3 4 aa 5 /a 6 '); 1 row created. sql&gt; sql&gt; delete from t1 where a = 'c 2 3 4 a/ 5 '; 0 rows deleted. </code></pre><p>sie müssen nicht mit start-/endblöcken herumspielen. der befehl sqlterminator innerhalb des befehls kann nicht verarbeitet werden, unabhängig davon, wo er sich in einer zeichenfolge befindet oder nicht. er kann keine zeilen mit schrägstrich allein in einer zeile in einer zeichenfolge verarbeiten.</p> <h2>aufgrund der empfehlungen in den kommentaren habe ich begonnen, <a href="http://tools.tortoisesvn.net/grepwin.html">grepwin</a> zu verwenden, und es ist fantastisch und <em> kostenlos</em>.</h2><hr><p>(ich bin immer noch ein fan von <a href="http://www.powergrep.com/">powergrep</a> , aber ich benutze es nicht mehr.)</p><p>ich weiß, dass sie es bereits erwähnt haben, aber powergrep ist <strong> fantastisch </strong>.</p><p>einige meiner lieblingsfunktionen sind:</p><ul> <li>klicken sie mit der rechten maustaste auf einen ordner, um powergrep darauf auszuführen</li> <li>verwenden sie reguläre ausdrücke oder wörtlichen text</li> <li>geben sie platzhalter für dateien an, die ein- und ausgeschlossen werden sollen</li> <li>suchen &amp; ersetzen</li> <li>der vorschaumodus ist gut, da sie sicherstellen können, dass sie das ersetzen, was sie beabsichtigen.</li> </ul><p>jetzt ist mir klar, dass die anderen grep-tools all das tun können. es ist nur so, dass powergrep alle funktionen in einer sehr benutzerfreundlichen benutzeroberfläche zusammenfasst.</p><p><strong> <em> von den gleichen wundervollen leuten, die sie mitgebracht haben <a href="http://en.wikipedia.org/wiki/regexbuddy">regexbuddy</a> und denen ich nichts mehr zu tun habe, als ihre sachen zu lieben.</em> </strong> (es sollte beachtet werden, dass regexbuddy eine basisversion von grep (für windows) selbst enthält und viel weniger kostet als powergrep.)</p><hr><h2>zusätzliche lösungen</h2><h3>vorhandene windows-befehle</h3><ul> <li> <a href="http://ss64.com/nt/findstr.html"> findstr </a> </li> <li> <a href="https://technet.microsoft.com/en-us/library/hh849903.aspx">auswahlzeichenfolge</a> in powershell</li> </ul><h3>linux-befehlsimplementierungen unter windows</h3><ul> <li> <a href="http://en.wikipedia.org/wiki/cygwin">cygwin</a> </li> <li> <a href="https://github.com/dthree/cash">bargeld</a> </li> </ul><h3>grep-tools mit grafischer oberfläche</h3><ul> <li> <a href="http://astrogrep.sourceforge.net/screenshots/">astrogrep</a> </li> <li> <a href="https://www.baremetalsoft.com/baregrep/">baregrep</a> </li> <li> <a href="http://stefanstools.sourceforge.net/grepwin.html">grepwin</a> </li> </ul><h3>zusätzliche grep-tools</h3><ul> <li> <a href="http://code.google.com/p/dngrep/">dngrep</a> </li> </ul> <p>wenn dies meine entwurfsentscheidung wäre, würde ich wahrscheinlich eher eine option c (modifizierte option a) wählen.</p><h3>erstens, warum nicht 'option b':</h3><p>zum einen gefällt mir die klarheit, dass jedes produkt seinen eigenen tisch hat. wenn es sich nur um eine große tabelle mit einem feld zur bestimmung des typs handelt, ist die beziehung nicht so klar.</p><p>zum anderen würde die indizierungsstrategie immer erfordern, dass dieses typfeld aufgelistet wird. da es sich nur um 4 typen handelt, ist die indexkardinalität extrem niedrig (<code>select * from product\_table where type='x'</code> führt im grunde sowieso einen vollständigen tabellenscan durch)</p><h3>option c.</h3><ul> <li>erstellen sie eine übergeordnete tabelle, die nur die spalten enthält, die alle typen gemeinsam nutzen</li> <li>erstellen sie jeden produkttyp als eigene tabelle mit ihren einzelnen spalten, mit einem zusätzlichen: ein link zur übergeordneten tabelle</li> <li>erstellen sie jede 'link'-tabelle: product\_option, model\_option usw. mit links zu den jeweiligen schlüsseln.</li> <li>für diejenigen mit wechselseitigen links (model\_option, option\_model) erstellen sie auch diese tabellen. dies erhöht die klarheit ihrer joins für alle, die sich das ansehen.</li> </ul><p>der nachteil ist die komplexität, sicherzustellen, dass waisen vermieden werden, wenn dinge aktualisiert/gelöscht werden, und zunächst die abfragen zu entwerfen, die diese tabellen verwenden.</p> <p>dies kann eine paginierung sein oder auch nicht, aber hier ist, wie ich paginierung in meiner web-app mache:</p><pre><code>|&lt; first, &lt;&lt; previous, page [5] of 12, next &gt;&gt;, last &gt;| </code></pre><p>die äußeren vier optionen sind links, während die <code>page [5] of 12</code> ist ein formular mit dem [5] als eingabefeld. für benutzer mit aktiviertem javascript verstecke ich die schaltfläche "senden" und sende das formular beim ereignis "unfokus" oder drücke den tastendruck. der benutzer hat die option, wie viele zeilen er anzeigen möchte, die er aus einem dropdown-menü auswählen kann: 10, 20, 50, 100, alle. zusätzlich zur paginierung biete ich auch das sortieren und filtern der ergebnisse an, obwohl dies möglicherweise nicht in jeder situation sinnvoll ist.</p><p><strong>bearbeiten</strong>:</p><p>hier ist ein ausschnitt aus einem modell unserer web-app, um ihnen eine bessere vorstellung zu geben. in dieser version wurden die wörter in den schaltflächen weggelassen, werden jedoch nach einer leichten verzögerung als tooltip beim hover angezeigt. möglicherweise stellen sie jedoch fest, dass das beibehalten der wörter zu einer höheren benutzerfreundlichkeit führt.</p><p><img src="https://i.stack.imgur.com/vzbu0.png" alt="virtuosi media&#39;s pagination example"></p><p>ein paar andere dinge, auf die sie hinweisen sollten:</p><ul> <li>die schaltflächen "erste" und "vorherige" wurden deaktiviert, da es sich um die erste seite handelt.</li> <li>das blau zeigt aktive schaltflächen an (ich muss dieses spezielle thema durch eine farbprüfung ausführen, um sicherzustellen, dass farbenblinde benutzer einen unterschied feststellen können).</li> <li>die tasten bleiben immer erhalten, auch wenn sie deaktiviert sind. dies gibt der schnittstelle konsistenz.</li> <li>aufgrund der skalierung habe ich ein eingabefeld anstelle eines dropdown-auswahlfelds ausgewählt. wenn sie 3000 seiten haben, möchten sie nicht nach unten scrollen, um eine seite zu finden</li> <li>die paginierung ist in einer singulären visuellen komponente gruppiert, um ähnlichkeit im zweck anzuzeigen.</li> </ul> <p>es gibt optionen, die ihnen dabei helfen:</p><pre><code> --insert-ignore insert rows with insert ignore. --replace use replace into instead of insert into. -t, --no-create-info don't write table creation info. </code></pre><p>denken sie an dieses paradigma</p><ul> <li>mysqldump alles von db1 in dump1</li> <li>laden sie dump1 in db3</li> <li>mysqldump alles aus db2 mit --replace (oder --insert-ignore) und --no-create-info in dump2</li> <li>laden sie dump2 in db3</li> </ul> Spacectl für Windows können wir in unserem Spaces Profil unter CLI-Software herunterladen.  
 Um unter Windows Spacectl zu starten, öffnen wir mittels *Windows+R* die Eingabeaufforderung, indem wir „cmd“ eingeben und mit OK bestätigen.  

Anschließend geben wir den Pfad zur spacectl.exe Datei an und bestätigen mit Enter.  

Schon können wir Spacectl benutzen und Spaces verwalten.  

![](https://faq.spaces.de/app/uploads/2019/02/spacectlwindows-300x119.jpg) hallo [@kielclaas](/u/kielclaas), 
kurz vor ab, auf (@)homee wird keiner antworten da hier keiner direkt angesprochen wird, am besten die [@support](/groups/support) gruppe ansprechen oder mich direkt [@andreas](/u/andreas) erwähnen :+1: 
du kannst heute noch einmal versuchen die geräteleichen zu entfernen. erfahrungsgemäß funktioniert es am darau… Wenn alles nichts hilft, starte das Spiel mit Konsole, schalte die SV-Cheats ein und "noclippe" durch die Zugtür hindurch:


* Gehe in Steam in die Spiele-Übersicht, suche Half-Life, klicke rechts drauf und wähle EIGENSCHAFTEN. Dort dann STARTOPTIONEN FESTLEGEN (ich weiss nicht genau wie es auf Deutsch genannt wird) und im nun geöffneten Eingabefeld "-console" eingeben, ohne Anführungszeichen.
* Im Spiel kannst du nun die Konsole mit der ^-Taste öffnen (normalerweise befindet die sich unter der ESC-Taste)
* Dort dann während des laufenden Spiels "sv\_cheats 1" eingeben und mit ENTER bestätigen
* Danach "noclip" eingeben und bestätigen
* Sollte das noclippen nun noch nicht funktionieren, einmal kurz Schnellspeichern und wieder Laden

Könnte sein, dass ich etwas vergessen habe. Einfach mal probieren, viel Glück. Hallo,


spontan fallen mir hier zwei Wege ein, die zum Ziel führen:


1. Man könnte das Problem über **Verzeichniseintragsfelder** (TC-Felder) lösen. Ist halt ein bisschen umständlich, diese erst im Nachhinein anzulegen, wenn man schon einige Überschriften bzw. Gliederungspunkte im Dokument hat. Wie man mit Verzeichniseintragsfeldern arbeitet, steht [hier](http://www.borkpc.de/Word/wd_inhver3.html) beschrieben.
2. Eine Alternative wäre, das komplett fertige **Inhaltsverzeichnis** im Nachhinein bzw. vor dem Drucken **in statischen Text** zu **konvertieren** und dann mit Suchen-und-Ersetzen die Nummerierung bzw. die Aufzählungszeichen zu entfernen.


Eine Rückmeldung wäre nett.


Gruß, BerchGerch