Я довольно новичок в SQL, и у меня проблема с ключевыми словами, вызывающими хаос в моем сценарии SQL. Я пытаюсь выполнить список готовых файлов сценариев .sql в C #. В настоящее время я читаю файл в строку и выполняю его с помощью command.ExecuteNonQuery (). Это прекрасно работает для большинства скриптов, но я сталкиваюсь с тем, что случайно содержит ключевое слово:
INSERT INTO [thetable]
SELECT '123123', 'abcabc', 'I WANT TO GO TO BED'
UNION ALL
SELECT '123124', 'abcdef', 'SOOO TIRED'
По сути, когда он попадает в GO, команда не выполняется.
Я отвечаю за создание этих файлов вставки, поэтому, если мне нужно каким-то образом их переформатировать, то это возможно; однако данные в них не подлежат обсуждению. Кроме того, поскольку я загружаю их из файла с несколькими строками, параметризация, позволяющая избежать этого, также не представляется возможной.
Любая помощь будет принята с благодарностью. Большое спасибо!
РЕДАКТИРОВАТЬ , чтобы добавить информацию:
Для пояснения, настоящая строка выглядит примерно так: «ASVFDS4 + 23eF3da34sddsdf3d3t4g ... 100charslater ... sd5OAyGOsiISIssdsd / sNUIGsdisd354f». Когда я пытаюсь выполнить команду, я ловлю исключение, которое говорит:
"Unclosed quotation mark after character string 'ASVFDS4+23eF3da34sddsdf3d3t4g...100charslater...sd5OAy'
Обратите внимание, что за 5OAy немедленно следует GOsiIS ..., что заставляет меня поверить, что GO фактически читается как команда, заставляя его ожидать конца строки перед этой командой.
Запуск .NET 3.5
РЕДАКТИРОВАТЬ 2
Я также должен уточнить, я в настоящее время делится на фактические операторы GO и выполняю команды индивидуально.
1025 * т.е. *
USE MyDatabase
GO
INSERT INTO [thetable]
SELECT '123123', 'abcabc', 'I WANT TO GO TO BED'
UNION ALL
SELECT '123124', 'abcdef', 'SOOO TIRED'
UNION ALL
...
SELECT '123189', 'abcabc', 'HAD SOME SLEEP'
GO
разбивается, поэтому я выполняю
USE MyDatabase
и
INSERT INTO [thetable]
SELECT '123123', 'abcabc', 'I WANT TO GO TO BED'
UNION ALL
SELECT '123124', 'abcdef', 'SOOO TIRED'
UNION ALL
...
SELECT '123189', 'abcabc', 'HAD SOME SLEEP'
отдельно. Поэтому моя проблема не в реальных операторах GO, а в том, что в строке данных появляются символы «GO».
ОТВЕТ :
Проблема в том, что я совершил ужасно глупую ошибку. Я разделил на «GO», который разбивает командную строку прямо в середине того параметра, где появляются буквы GO.
/ Facepalm
Спасибо за помощь!