SQL Server BCP не принимает канал |терминатор поля в файле формата - PullRequest
1 голос
/ 08 апреля 2011

Я создаю процесс BCP IN для загрузки файла с разделителями канала в таблицу. Утилита BCP выдает мне ошибку Ошибка = [Microsoft] [Собственный клиент SQL Server 10.0] [SQL Server] Синтаксическая ошибка в строке 4 столбца 51 в файле формата xml при запуске. Первые строки файла формата следующие:

<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <RECORD>
        <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="|", MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS" />

Расположение ошибки находится прямо у "|" ПОЛЕ записи. Я пробовал различные варианты одинарных и двойных кавычек, без кавычек и косой черты перед и вокруг трубы, но ошибка всегда выдается в одном и том же месте.

Сам файл представляет собой несколько строк данных с разделителем канала и короткими записями заголовка / трейлера вверху и внизу файла.

Ответы [ 2 ]

3 голосов
/ 08 апреля 2011

Не уверен, что это проблема, но запятая после атрибута терминатора выглядит неправильно

TERMINATOR = "|" ,

2 голосов
/ 08 апреля 2011

Я не могу сказать по этому вопросу, но если это как-то связано с окнами команд, пакетными файлами и / или не очень тонкими манипуляциями с плоскими файлами, вас может поразить тот факт, что символ канала имеет очень специфическое использование. Есть несколько неясных способов «убежать» от специальных символов в этих средах ... и хотя я так и не нашел убедительной документации, когда сражался в этой битве, со временем я определил, что используя одну или комбинацию кавычек, ^, и & часто решал бы мои проблемы. Например, вы можете осторожно попробовать следующее:

<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="^|", MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS" />

<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="&|", MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS" />

Конечно, это может быть просто проблема запятой @Conrads, в этом случае игнорируйте все это.

...