2010-03-30 10 views
5

ich das folgende Skript zum Erstellen einer Tabelle nicht auftreten haben:Ausführen von SQL-Skript durch psql gibt Syntaxfehler, die in PgAdmin

-- Create State table. 
DROP TABLE IF EXISTS "State" CASCADE; 
CREATE TABLE "State" (
StateID SERIAL PRIMARY KEY NOT NULL, 
StateName VARCHAR(50) 
); 

Es läuft gut in der Abfrage-Tool von PgAdmin. Aber wenn ich versuche, es von der Kommandozeile ausgeführt werden unter Verwendung von psql:

psql -U postgres -d dbname -f 00101-CreateStateTable.sql

ich einen Syntaxfehler erhalten, wie unten gezeigt.

2: ERROR: syntax error at or near "" 
LINE 1: 
     ^
psql:00101-CreateStateTable.sql:6: NOTICE: CREATE TABLE will create implicit sequence "State_stateid_seq" for serial column "State.stateid" 
psql:00101-CreateStateTable.sql:6: NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index "State_pkey" for table "State" 
CREATE TABLE 

Warum bekomme ich einen Syntaxfehler mit psql und nicht mit PGAdmin?

Mit freundlichen Grüßen

Peter

Antwort

10

Führen Sie Ihre Datei 00101-CreateStateTable.sql durch einen Hex Dumper. Ich wette, Sie haben einen UTF-16-Marker am Anfang der Datei (vor den "-" Kommentarzeichen).

+0

0000000 ef bb bf 2d 2d 20 43 72 65 61 74 65 20 53 74 61 0000010 74 65 20 74 61 62 6c 65 2e 0A 44 52 4f 50 20 54 0000020 41 42 4c 45 20 49 46 20 45 58 49 53 54 53 20 22 0000030 53 74 61 74 65 22 20 43 41 53 43 41 44 45 3b ​​0a 0000040 43 52 45 41 54 45 20 54 41 42 4c 45 20 22 53 74 0000050 61 74 65 22 20 28 0a 09 53 74 61 74 65 49 44 20 0000060 53 45 52 49 41 4c 20 50 52 49 4d 41 52 59 20 4b 0000070 45 59 20 4e 4f 54 20 4e 55 4c 4c 2c 0a 09 53 74 0000080 61 74 65 4e 61 6d 65 20 56 41 52 43 48 41 52 28 0000090 35 30 29 0a 29 3b Bedeutet das etwas für dich? – Peter

+0

Es ist die Ausgabe von OSX Hexdump für diese Datei – Peter

+0

Ich habe gerade eine Funktion meines Texteditors verwendet, um die Datei mit UTF-16-Codierung zu öffnen. Dies zeigt seltsame Zeichen. Beim Öffnen mit UTF-8 zeigt es sich in Ordnung. – Peter

0

Welche Version (-s) verwenden Sie? IF EXISTS kam mit Version 8.2, vielleicht sind Sie Verbindung mit Version 8.1 oder älter, wenn Sie psql verwenden.

3

Um BOM-Sequenz auf Ubuntu entfernen Sie verwenden bomstrip können, bomstrip-Dateien

0

euch danken. Ich habe einige Wochen mit diesem Problem gekämpft. Ich konnte meine SQL-Skripte nicht mit PSQL ausführen. Ich dachte, ich habe einige Probleme mit meinem Betriebssystem, jetzt weiß ich, dass es das Stücklistenproblem in meiner Textdatei ist. Ich habe ein bomstrip-Paket in Ubuntu installiert und nun funktionieren alle meine SQL-Skripte wieder.

Verwandte Themen