лучшая практика для синтаксиса сценариев SQL - PullRequest
1 голос
/ 13 июля 2011

У меня есть файл sql, который содержит длинный Inserst. проблема в том, что когда я хочу, например, отредактировать столбец №12, я должен начать считать столбцы в области значений, и это очень запутанно.

они выглядят примерно так:

enter image description here

Ведьма очень запутанная для обновления, так как вы должны найти, какое значение принадлежит какому столбцу.

есть ли другой способ написания сценария вставки, чтобы было проще обрабатывать столбец с его значениями? или, может быть, есть инструмент, который может помочь?

может быть что-то вроде -

Insert tableName column1 = '10', column2 = '5' , column3 = 'asdsd' ....

P.S - чтобы увидеть изображение, щелкните по нему правой кнопкой мыши и выберите «Открыть в новой вкладке»

Ответы [ 3 ]

1 голос
/ 13 июля 2011

Используйте две строки:

INSERT INTO TABLE  (COLUMN1, COLUMN2       , COLUMN3)
            VALUES (Value1 , "Long Value 2", "..."  );
1 голос
/ 13 июля 2011

Вы можете использовать новый способ вставки записей, который был введен в SQL Server 2008.

insert into @MyTable 
  (Column1, Column2, Column3, Column4, Column5,                   Column6) values
  (1,       2,       3,       4,       cast(6 as numeric(38,8))), 6),
  (1,       2,       3,       4,       cast(6 as numeric(38,8))), 6),
  (1,       2,       3,       4,       cast(6 as numeric(38,8))), 6),
  (1,       2,       3,       4,       cast(6 as numeric(38,8))), 6),
  (1,       2,       3,       4,       cast(6 as numeric(38,8))), 6)

Вам необходимо сохранять имена столбцов выровненными по данным, и когда у вас больше строк, чем умещается наНа странице вы можете либо перезапустить вставку, либо добавить строку комментария к столбцу в соответствующем месте

insert into @MyTable 
  (Column1, Column2, Column3, Column4, Column5,                   Column6) values
  (1,       2,       3,       4,       cast(6 as numeric(38,8))), 6),
  (1,       2,       3,       4,       cast(6 as numeric(38,8))), 6),
  (1,       2,       3,       4,       cast(6 as numeric(38,8))), 6),
--(Column1, Column2, Column3, Column4, Column5,                   Column6) values
  (1,       2,       3,       4,       cast(6 as numeric(38,8))), 6),
  (1,       2,       3,       4,       cast(6 as numeric(38,8))), 6)

Вы также можете сохранить свои данные в фактической таблице и вместо этого обновить таблицу.Используйте какой-нибудь инструмент для сценария вставки из этой таблицы.Например, сгенерировать сценарии в Server Management Studio.

0 голосов
/ 13 июля 2011

Вам не нужно несколько INSERT операторов - подойдет один.

Вы можете использовать оператор SELECT с UNION для вставки нескольких строк:

INSERT myTable (Col1, Col2)
SELECT val1, val2 UNION 
SELECT val3, val4 

Если вы используете SQL Server 2008, оператор VALUES имеет расширение:

INSERT myTable (Col1, Col2)
VALUES (val1, val2),
(val3, val4)

См. INSERT для SQL Server на MSDN.


Если вы говорите о читабельности, вы могли бы использовать что-то вроде следующего (хотя у вас получится очень длинный файл), и его кодирование займет много времени:

INSERT myTable (Col1, Col2)
SELECT val1, -- Col1
       val2 -- Col2
UNION 
SELECT val3, -- Col1
       val4 -- Col2

Не существует стандартного соглашения о том, что вы хотите, так как такие скрипты предназначены для запуска в SQL, а не для чтения.

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