sql >> Database >  >> RDS >> PostgreSQL

Hoe maak je een bouwsysteem voor PostgreSQL

De inhoud van de "cmd" . van het bouwsysteem array moet zijn wat u op de opdrachtregel zou typen om die opdracht uit te voeren - DB's zijn geen uitzondering. Ik weet niets over Postgres internals, maar als je de naam van de DB op de opdrachtregel moet specificeren, dan moet je dat in het buildsysteem doen.

Er is echter een alternatief voor het rondslingeren van mogelijk tientallen buildsystemen - het definiëren van het buildsysteem in een .sublime-project het dossier. Volgens de documentatie , het .sublime-project bestand kan drie basisgroepen hebben:"folders" , "settings" , en "build_systems" . Om een ​​project aan te maken, opent u de map(pen) die u in de zijbalk wilt opnemen en klikt u vervolgens op Project -> Save Project As... . Zet de naam in en bewaar het op een logische plaats. Selecteer vervolgens Project -> Edit Project , waarmee het .sublime-project . wordt geopend bestand met JSON-syntaxis. Het zou er ongeveer zo uit moeten zien:

{
    "folders":
    [
        {
            "follow_symlinks": true,
            "path": "C:\\Users\\MattDMo\\Development\\DB\\my_postgres_db1"
            // by default, Sublime uses double-backslashes :(
        }
    ],
}

Voeg een "build_systems": identifier na het afsluitende vierkante haakje van "folders" , en zet in je bouwsysteem:

{
    "folders":
    [
        {
            "follow_symlinks": true,
            "path": "C:\\Users\\MattDMo\\Development\\DB\\my_postgres_db1"
        }
    ],
    "build_systems":
    [
        {
            "name": "my_postgres_db1",
            "cmd": ["C:/PostgreSQL/9.3/bin/psql.exe", "-W", "-U", "postgres", "-d", "my_postgres_db1", "-f", "$file"],
            // you can use either double backslashes or forward slashes on Windows. Forward is better :)
            "selector": "source.postgresql",
            "shell": true
        }
    ]
}

en je zou helemaal klaar moeten zijn. Nu u uw sjabloon hebt, kunt u zoveel kopieën van het bestand maken als u wilt, de DB-naam en de systeemnaam naar behoefte aanpassen. De "name" veld zal verschijnen in het Tools -> Build System menu, en je kunt het direct selecteren of Automatic . gebruiken als je geen andere bouwsystemen hebt met "selector": "source.postgresql" erin.

Het brengt wel wat werk met zich mee voor elke DB die je hebt, en je moet niet vergeten om het actieve project te wisselen wanneer je van DB wisselt (ik houd gewoon één venster open voor elk project dat ik actief heb), maar verder is het zou je probleem moeten oplossen. U ziet dat ik de "env": {"PGPASSWORD": "password"}, heb verwijderd regel (het had in ieder geval tussen vierkante haken moeten staan) en voegde in plaats daarvan de -W . toe opdrachtregeloptie naar psql.exe om het wachtwoord te vragen. Er is geen manier om .sublime-project te versleutelen bestanden, zodat iedereen die ze kan lezen het wachtwoord van uw server kan zien. Ik weet niet of ik "shell": true de omgevingsvariabelen van je shell importeert of niet, ik vermoed van niet, maar je zult het moeten testen. Het is één ding om in te voeren bij het uitvoeren van het bouwsysteem, maar het zal uw algehele systeem veiliger maken. Natuurlijk kun je teruggaan als je de extra beveiliging niet wilt/nodig hebt, maar als het een openbare server is, zou ik dat niet doen.

Veel succes!



  1. Geven DDL-statements je altijd een impliciete commit, of kun je een impliciete rollback krijgen?

  2. MySQL staat ON UPDATE CURRENT_TIMESTAMP niet toe voor een DATETIME-veld

  3. SQL DROP-index, DROP-tabel en DROP-databaseverklaringen uitgelegd met voorbeelden

  4. Inzicht in door PDO opgestelde verklaringen en bindende parameters