При работе с BCP IN для файлов, созданных Pandas to_csv, работа с простой цитатой файла не выполняется. - PullRequest
0 голосов
/ 25 октября 2019

Я пытаюсь запустить процесс на python для записи данных в .csv, который затем можно BCP'd в базу данных MSSQL.

Основная команда to_csv, которую я использую:

df.to_csv(csv_path, sep = "«", header = False, index = False, line_terminator="[~~]")

Одна проблема, с которой я столкнулся, это то, как программа обрабатывает двойные кавычки в тексте. Если найден набор двойных кавычек, он выводится из кавычек.

Таким образом, строка, которая выглядит следующим образом:

    1, 7, Executed Job: "abcdf" Complete

Получает превращение в это при загрузке в данные:

    1, 7, "Executed Job: ""abcdf"" Complete"

Текущая команда BCP, которую я использую:

bcp database.dbo.table in "csv_path" -S server 
-U uname -P pword -T -C RAW -r "[~~]" 
-t"«" -e error_test.txt -f "xml_path"

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

Я знаю, как установить другой escape и задать кавычки для csv.QUOTE_NONE, но это, похоже, создает другие проблемыс тем, как BCP читает файл. А именно, если я передаю ему символ, такой как «», в аргументе escapechar, он считывается в базу данных с включенным символом », потому что он не понимает его как escape-символ.

Я загружаю его всначала подготовьте таблицу, так что я могу просто обновить часть «Т» ELT, чтобы справиться с ней, но похоже, что это может быть беспорядок. Есть ли способ настроить мои настройки BCP to_csv +, чтобы обойти эту проблему?

PS Причина глупых символов в качестве разделителей / терминаторов заключается в том, что некоторые данные используют почти каждый символ, вплоть до того, что даже |не является безопасным разделителем.

Редактировать: я пытался использовать doublequote = False с to_csv, но все равно столкнулся с ошибками в дальнейшем. Я специально получил сообщение «необходимо убежать, но без набора символов для сброса».

...