База данных BCP с периодом в названии
-
21-09-2019 - |
Вопрос
У меня возникли проблемы с использованием процесса SQL BCP для загрузки моих таблиц с данными.Я вызываю его из приложения .NET, поэтому я запускаю исполняемый файл xp_cmdshell для выполнения команды bcp.Вот как выглядит одна из этих команд:
EXEC master..xp_cmdshell 'bcp "[D001Test.Restore].[dbo].[GeneralComments]" in "<DataFile>" -q -c -t "|_|" -r "|+~+|" -k -V80 -a33000 -E -STest'
Когда имя базы данных, в которую я импортирую (в данном случае D001Test.Restore), содержит "." в имени, команда bcp завершается с ошибкой.Есть ли какой-нибудь способ обойти это?Я пробовал как со скобками, так и без них.Возможно, мне придется импортировать данные в новую базу данных и переименовать их в нужное имя после того, как это будет сделано.
Решение
Вам не нужен аргумент -q и кавычки.В документации указано следующее относительно аргумента q:
Используйте этот параметр, чтобы указать базу данных, имя владельца, таблицы или представления, которое содержит пробел или одинарную кавычку отметьте.Заключите весь текст из трех частей название таблицы или представления в кавычки ("").
Имя вашей базы данных не содержит ни пробела, ни одинарных кавычек.
Попробуй это:
bcp [D001Test.Restore].dbo.GeneralComments in "<DataFile>" -c -t "|_|" -r "|+~+|"
-k -V80 -a33000 -E -STest