SQL - создать базу данных и таблицы в одном скрипте - PullRequest
11 голосов
/ 30 июля 2010

Извините, если уже спросили, но я ничего не могу найти по этому вопросу.

Я перемещаю что-то из MySQL в SQL Server. Я хочу, чтобы файл .sql создал базу данных, а таблицы в базе данных,После проработки синтаксических перегибов я заставил файлы работать (почти).

Если я запускаю

IF db_id('dbname') IS NULL 
    CREATE DATABASE dbname

, это работает нормально, и если я запускаю

CREATE TABLE dbname.dbo.TABLE1 (
);
...
CREATE TABLE dbname.dbo.TABLEN (
);

это также отлично работает.Но если я запускаю их в одном и том же файле, я получаю эту ошибку

Database 'dbname' does not exist

Прямо сейчас операторы CREATE TABLE находятся вне оператора IF, что мне бы хотелось, но я также не могу найтисинтаксис для этого.({} не работает?)

Итак, мой большой вопрос: Как мне убедиться, что определенная команда в файле .sql завершена раньше, чем другая в SQL Server?

Мой второй вопрос: как мне включить несколько инструкций в предложение IF?

Чтобы было ясно, я запускал это в sqlcmd.

Ответы [ 4 ]

19 голосов
/ 30 июля 2010

Поместите команду GO между запросами.

IF db_id('dbname') IS NULL 
    CREATE DATABASE dbname

GO

CREATE TABLE dbname.dbo.TABLE1 ( 
); 

CREATE TABLE dbname.dbo.TABLEN ( 
); 

Что касается размещения операторов таблицы в IF, вы не сможете этого сделать из-за команды GO.После этого вы можете создать дополнительные операторы IF, чтобы проверить наличие каждой таблицы.

Синтаксис для блока if:

IF condition
BEGIN
   ....
   ....
END
4 голосов
/ 30 июля 2010

Между созданием базы данных и созданием таблиц вам понадобится оператор USE.

USE dbname

Таким образом, таблицы будут созданы в правильном месте, без необходимости указывать имя БД для всего.

Кроме того, ИДТИ и НАЧАТЬ ... КОНЕЦ, как все говорят.

1 голос
/ 30 июля 2010

Помещая GO между операторами (для создания отдельных пакетов операторов)

0 голосов
/ 30 июля 2010

Вы должны разделить операторы с помощью ключевого слова GO :

sql query
GO

another sql query
GO

and so on
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...