автоматизировать создание операторов SQL с помощью инструмента сценариев - PullRequest
0 голосов
/ 17 октября 2011

У меня часто бывает такая задача: вставить большое количество пользователей в таблицу пользователей с похожими свойствами.Не всегда так просто, но в общем случае список строк -> список соответствующих операторов SQL.

Мое обычное решение заключается в том, что список имен пользователей в Excel использует формулу для генерации загрузки операторов вставки

=concatenate("insert into users values(username .......'",A1,"'.....

и затем я заполняю формулу, чтобы получить все строки вставки.

Это работает, но иногда утверждение длинное, иногда включает в себя несколько разных шагов для каждого, и объединяет все вФормула Excel и получение всех правильных кавычек - это боль.

Мне интересно, есть ли лучший способ.Что я действительно хочу, так это иметь возможность иметь шаблон файла шаблона txt:

insert into users
  ([username],
          [company] ...



          )
   values('<template tag1>...

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

command_line> make_big_file_using_template template.txt /values [username1 username2] 
/output: bigfile.txt

и это дает мне большой файл с шаблоном, повторяемым для каждого значения имени пользователя, с заменой тега на имя пользователя.

Так существует ли такая команда, или мои ожидания от инструментов командной строки слишком высоки?Подойдет любой свободно доступный инструмент Windows.Я мог бы запустить AC # программу, чтобы сделать это не так много времени, но я чувствую, что уже должен быть простой в использовании инструмент.

1 Ответ

1 голос
/ 17 октября 2011

Это тривиально, используя скрипт Powershell.PS допускает встроенные переменные в строках, поэтому вы можете сделать что-то вроде:

$Tag1 = 'blah'
$Tag2 = 'foo'

$SQLHS = @"
INSERT INTO users
([username],
 [company],...)
VALUES
('$tag1', '$tag2'...)
"@

set-content 'C:\Mynewfile.txt' -value $SQLHS

* @"...."@ - это здесь-строка , что позволяет очень легко писать читаемый код без экранированиякавычки и тому подобное.

Вышеприведенное можно очень легко изменить, чтобы принимать параметры для различных тегов и другого для выходного файла, или запускать набор значений, находящихся в другом файле .txt или .csv, в качестве входных данных..

РЕДАКТИРОВАТЬ:

Чтобы изменить его для принятия параметров, вы можете просто добавить блок param() сверху:

param($outfile, $tab1, $tab2, $tab3)

Затем используйте переменные $ в вашем скрипте:

set-content "$outfile" -value $SQLHS

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