Install scripts?
Rookie question... I'm converting a MySQL database to Postgre. In MySQL,
all the tables are defined in seprate 'table_name.sql' file.
There is one 'install.sql' file which does something like:
DROP DATABASE db_name IF EXISTS (<--- is there something similar in
Postgre? Like the CREATE OR REPLACE FUNCTION)
CREATE DATABASE db_name;
USE db_name;
SOURCE users.sql;
SOURCE teams.sql;
SOURCE players.sql;
etc.
Using the mysql command like tool, you just run "source install.sql"
and the whole database is loaded.
How do you do this with Postgre? I tried using the "insert filename"
command, but one file cannot seem to load another (ie, a SELECT filename
gives me an error) and to start with, I cannot find something similar to
"USE DATABASE" ....
Thanks!
Charl Gerber <cpger@xs4all.nl> writes:
There is one 'install.sql' file which does something like:
DROP DATABASE db_name IF EXISTS (<--- is there something similar in
Postgre? Like the CREATE OR REPLACE FUNCTION)
CREATE DATABASE db_name;
There's no IF EXISTS. Usually people just do a DROP and ignore the
error if any.
How do you do this with Postgre? I tried using the "insert filename"
command, but one file cannot seem to load another (ie, a SELECT filename
gives me an error) and to start with, I cannot find something similar to
"USE DATABASE" ....
You probably want to be looking at psql's \i and \c commands,
respectively. Does "insert foo" really mean a file inclusion
command in MySQL? Bizarre ...
regards, tom lane
Charl Gerber wrote:
DROP DATABASE db_name IF EXISTS (<--- is there something similar in
Postgre? Like the CREATE OR REPLACE FUNCTION)
No, you just go ahead and ignore the error.
CREATE DATABASE db_name;
USE db_name;
\connect db_name
SOURCE users.sql;
\i users.sql
--
Peter Eisentraut
http://developer.postgresql.org/~petere/