Я новичок в программировании. Я надеялся на некоторую помощь, чтобы исправить приведенный ниже код.
У меня есть приложение WinForms, использующее базу данных SQL Azure. в целом я пытаюсь автоматически импортировать файл CSV, когда он поступает в папку cdrive.
Я исследовал и попробовал BCP, но не смог пройти проверку безопасности Azure на своей учетной записи...., я не думаю, что мой синтаксис построен правильно. Я также снова посмотрел на вариант хранения Blob без особой удачи. Мне нужно больше исследовать эти варианты.
если я применить следующее непосредственно к командной строке
dtexec/f "C:\InboundWindow\ImportScript.dtsx
Я получил успешный результат. Имея это в виду, я затем перетащил fileSystemWatcher на свои WinForms и затем применил следующий код.
private void fileSystemWatcher1_Created(object sender, FileSystemEventArgs e) {
// Process.Start("cmd", @"/C dtexec/f "C:\InboundWindow\ImportScript.dtsx");
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = @ "/C dtexec/f "C:\InboundWindow\ImportScript.dtsx";
p.StartInfo.RedirectStandardOutput = false;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = false; //don't show the console at all
p.Start();
// FullPath is the new file path.
MessageBox.Show(string.Format("Created: {0} {1}", e.FullPath, e.ChangeType));
}
это то, где это теперь терпит неудачу. Я пробовал много вариантов, найденных на различных форумах, однако файл .dtsx никогда не импортируется в базу данных SQL Azure. однако я получаю ответное сообщение с сообщением об изменении папки.
Любая помощь в освещении, где я иду не так, и исправление вышеупомянутого было бы здорово. пожалуйста, потерпите меня, поскольку я новичок в С# и программировании в целом. Спасибо
Вам не хватает закрытия "
для аргументов, попробуйте:
p.StartInfo.Arguments = @"/C dtexec/f ""C:\InboundWindow\ImportScript.dtsx""";
Смотрите здесь для использования двойных кавычек и @
private void fileSystemWatcher1_Created(object sender, FileSystemEventArgs e)
{
// Process.Start("cmd", @"/C dtexec/f "C:\InboundWindow\ImportScript.dtsx");
Process p = new Process();
p.StartInfo.FileName = "ImportScript.dtsx"; //Since this is the name of the file that going to be started
p.StartInfo.Arguments = @"/C dtexec/f "C:\InboundWindow\ImportScript.dtsx";
p.StartInfo.RedirectStandardOutput = false;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = false; //don't show the console at all
p.Start();
// FullPath is the new file path.
MessageBox.Show(string.Format("Created: {0} {1}", e.FullPath, e.ChangeType));
}
Я заменил "FileName =" cmd.exe "на" ImportScript.dtsx ". Попробуйте это. :) Я не уверен на 100 процентов, но из того, что я вижу, что это неправильно. (Может быть, другие могут увидеть другую проблему, но хотя бы попробуй :))
"
дляArguments
: попробуйтеp.StartInfo.Arguments = @"/C dtexec/f ""C:\InboundWindow\ImportScript.dtsx""";
см. Здесь для использования двойных кавычек и@
.