webentwicklung-frage-antwort-db.com.de

Beim Importieren einer CSV-Datei aus PGAdmin wurde die Berechtigung verweigert

Ich verwende PGAdmin 1.14.3.

Wenn ich versuche, einen Importbefehl auszuführen:

COPY grad(country_code, postal_code, place_name, admin_name1, admin_code1, admin_name2, admin_code2, admin_name3, admin_code3, latitude, longitude, accuracy)
FROM 'C:\\Users\\denis\\Desktop\\BP2Project\\USA\\US.txt';

Ich bekomme ein 

FEHLER: Datei konnte nicht geöffnet werden "C:\Users\denis\Desktop\BP2Project\USA\US.txt" zum Lesen: SQL-Status für Berechtigung verweigert: 42501

Ich habe andere ähnliche Fragen nachgesehen und keine von ihnen hat mein Problem gelöst.

Ich habe mich als Benutzer "postgres" angemeldet, der der Superuser ist. Ich sehe nicht, warum mir Berechtigungen fehlen. Ich bin unter Windows 7.

27
Tool

Der Benutzer Postgres muss Lesezugriff auf die Datei haben, aus der Sie kopieren möchten.

In diesem Artikel erfahren Sie, wie Sie den Sicherheitszugriff für Dateien unter Windows ändern.

8
Houari

Der Zulassungsartikel , der in der Antwort von Houari und Flimzy erwähnt wird, ist ein gutes Nachschlagewerk, aber eine direkte Antwort (die von mir verwendete schnelle Lösung) ist

  • Klicken Sie mit der rechten Maustaste auf den Ordner mit den Datendateien, denen die Berechtigung verweigert wurde, und klicken Sie dann auf Properties.
  • Wählen Sie im Eigenschaftenfenster des Ordners die Registerkarte Sicherheit.
  • Klicken Sie auf die Schaltfläche Edit.
  • Klicken Sie im Fenster "Berechtigungen für den Ordner" auf die Schaltfläche Add ....
  • Geben Sie Everyone in das Textfeld "Geben Sie die zu verwendenden Objektnamen ein" ein.
  • Klicken Sie auf OK und das Fenster wird geschlossen.
  • Stellen Sie sicher, dass die Standardberechtigungen für Read & Execute über das Kontrollkästchen im vorherigen Fenster auf Allow gesetzt wurden.
  • Klicken Sie auf OK und das Fenster wird geschlossen.
  • Klicken Sie im Fenster Folder Properties auf die Schaltfläche Apply.

Jetzt können Sie die SQL-Anweisung COPY ausführen, die auf diese Dateien zugreifen muss.

  • Kehren Sie anschließend zum Eigenschaftenfenster des Ordners zurück.
  • Klicken Sie auf die Schaltfläche Edit.
  • Wählen Sie im Feld "Gruppen- oder Benutzernamen:" den Eintrag Everyone aus.
  • Klicken Sie auf die Schaltfläche Remove
  • Klicken Sie in den verbleibenden Fenstern auf OK.

Die Berechtigungen wurden jetzt wieder so eingestellt, wie sie waren.

53
Kevin

Ok, so funktioniert der COPY-Befehl, um eine Tabelle Schritt für Schritt in CSV zu exportieren .. __ Bitte beachten Sie, dass ich pgAdmin 111 verwende.

  1. Erstellen Sie den Zielordner, in den Sie eine Tabelle exportieren möchten. Z. B. C:\myExports
  2. Legen Sie eine Lese-/Schreibberechtigung für diesen Ordner fest, indem Sie die folgenden Schritte ausführen:

Klicken Sie mit der rechten Maustaste auf den Ordner mit den Datendateien, denen die Berechtigung verweigert wurde, und klicken Sie dann auf Eigenschaften.

Wählen Sie im Eigenschaftenfenster des Ordners die Registerkarte Sicherheit aus. Klicken Sie auf die Schaltfläche Bearbeiten.

Klicken Sie im Fenster "Berechtigungen für den Ordner" auf die Schaltfläche Hinzufügen ... _. Geben Sie "Everyone" in das Textfeld "Geben Sie die zu verwendenden Objektnamen ein" ein.

Klicken Sie auf OK und das Fenster wird geschlossen . Stellen Sie sicher, dass die Standardberechtigungen zum Lesen und Ausführen über das Kontrollkästchen> im vorherigen Fenster auf Zulassen gesetzt wurden. Klicken Sie auf OK und das Fenster wird geschlossen.

Klicken Sie im Fenster Ordnereigenschaften auf die Schaltfläche Übernehmen.

  1. Dies ist der knifflige Teil. Erstellen Sie im Ordner myExports eine leere CSV-Datei mit dem gewünschten Namen.E.g employee.csv

  2. Führen Sie dann den Befehl Kopieren wie folgt aus: 

    angestellten kopieren nach 'C:\myExports\employee.csv' Trennzeichen ',' csv;

mitarbeiter ist der Tabellenname in diesem Beispiel ..

Hoffe das hilft.

7

Wenn Sie nicht jedem Berechtigungen erteilen möchten, können Sie dem Konto, mit dem der Dienst gestartet wurde, Berechtigungen hinzufügen. Kopieren Sie in der Systemsteuerung - Verwaltung - Dienste den Kontonamen auf der Registerkarte "Anmelden". (Auf meinem System heißt das Konto "Network Service".) Dann teilen Sie den Ordner mit der CSV-Datei mit diesem Benutzer, wie in der Antwort oben gezeigt.

2
Jonas B

Antworten auf dieses Problem in verschiedenen Threads gehen in etwa folgendermaßen aus: __. 1. "Sagen Sie mir genau, welchen Befehl Sie verwendet haben" 2. Msgstr "Vergewissern Sie sich, dass Sie die richtigen Berechtigungen haben" 3. "Nur verwenden/kopieren"

Ich habe gerade versucht, jedem die cvs-Datei zu erteilen, aus der ich kopieren möchte, und es wird mir immer noch die Berechtigung verweigert. Ich denke, dass diese Funktionalität für mehrere aufeinanderfolgende Versionen über mehrere aufeinanderfolgende Windows-Versionen hinweg fehlerhaft ist.

0
Alex

für mich und ich habe gerade einige Stunden damit verbracht ... Ich habe eine zentrale Datenbank mit einer HP-Box, die mit 14.04 postgresql-9.5 pgAdmin3 postgis-2.2 betrieben wird, die Freigaben erfolgen über eine getaktete Samba-Freigabe. Meine Kunden verwenden eine Mischung aus Windows 10.1, 7, 8.1 und ich habe einen Ubuntu 14.04-Desktop.

Ich arbeite mit großen Tabellen, die Datensätze aktualisieren und Daten normalisieren, und habe die Routinen um SQL-Kopieranweisungen aus CSV-Dateien herum aufgebaut, die vom Kern COPY public.table_1 TO erstellt wurden (der Freigabeordner, den ich in Samba https eingerichtet hatte: //www.youtube.com/watch?v=ndAYZ0DJ-U4 ) '/srv/samba/share/[Dateiname

Ich kann die Datenbank dann aktualisieren, wenn die Tabellen mit COPY table_1 aus '/srv/samba/share/test.csv' USING DELIMITERS ',' WITH NULL AS '' CSV HEADER geändert wurden. von einem meiner Kunden.

Der Schlüssel, soweit ich feststellen konnte, ist, dass die Clients, die die Aktualisierung durchführen, Superbenutzer sein müssen. Außerdem muss alles in Bezug auf Benutzer gebunden sein, da hier 4 Server zusammenarbeiten, die hier zusammenarbeiten: Postgresql, Samba, UNIX und WINS. Alle Meine Benutzer sind auf jedem Server mit dem gleichen Benutzernamen registriert, und das gleiche Passwort ist der Hauptfaktor. 

Ich hatte lange versucht, Dinge zu verschieben und verschiedene Namenskonventionen auszuprobieren, aber am Ende war es http://www.postgresql.org/message-id/[email protected]gov.au das hat mich geordnet, es war wie ein großer Schalter, der einrastet. Chown 777 auf Ihre Aktien und das Gruppenmanagement war eine wichtige Lernkurve, aber die Stunden, die ich damit verbracht habe, werden Belohnungen ernten ... Ubuntu liebt das Leben und den Geist von Open Source zu lieben, aber das könnte nur Schlafmangel sein, der hereinzieht ... IT WORKS

0
Terry

Um dieses Problem zu beheben, müssen Sie der CSV-Datei die Berechtigung erteilen, da die in einem COPY-Befehl vorhandene CSV-Datei direkt vom Server, jedoch nicht von der Clientanwendung gelesen wird. Um diese Datei für einen Server zugänglich zu machen, müssen wir die vollständige Lese- und Schreibberechtigung erteilen, damit der Postgresql-Benutzer diese Datei lesen und schreiben kann.

Hinweis: Artikel Schritt für Schritt Anleitung.

0
Diwas Poudel