Это может быть правдой, что:
полностью согласуется с обоими вышеперечисленными функциями и по-прежнему делает еще одну точку:
Другие ответы или, по крайней мере, некоторые из них либо делают точки 1 и 2, но не 3, либо делают точки 3 и нижние точки 1 и 2. Но все три являются истинными.
Возможно, что переключение лошадей в середине потока здесь потребует значительного поломки и что может возникнуть больше проблем, связанных с изменением Python, чтобы интуитивно обработать открывающий фрагмент Стефано. И это может быть правдой, что кто-то, кто хорошо знал внутренности Python, мог объяснить минные поля последствий. Однако
Существующее поведение не является Pythonic, а Python успешным, потому что очень мало о языке нарушает принцип наименьшего удивления где-нибудь возле , это плохо , Это настоящая проблема, было бы разумно ее искоренить. Это дефект дизайна. Если вы понимаете язык намного лучше, пытаясь проследить поведение, я могу сказать, что C ++ делает все это и многое другое; вы многому научитесь, перейдя, например, на тонкие ошибки указателя. Но это не Pythonic: людям, которые заботятся о Python достаточно, чтобы упорствовать перед лицом этого поведения, являются люди, которые тянутся к этому языку, потому что у Python гораздо меньше сюрпризов, чем на другом языке. Dabblers и любопытные становятся Pythonistas, когда они удивляются тому, как мало времени требуется, чтобы получить что-то работающее - не из-за дизайна fl - я имею в виду, скрытая логическая головоломка - которая урезает интуицию программистов, которые тянутся к Python потому что он просто работает.
Ничего себе, я ожидал, что смогу ответить «Просто установите спецификатор текста», но подумал, что вы уже попробовали бы это, поэтому я попробовал это, прежде чем ответить. Сюрприз, SSIS не поддерживает стандартные CSV-файлы!
Похоже, это общая жалоба . Существует один комментарий от Microsoft о некоторых примерах, которые могут помочь; Вот проект codeplex , они упомянули, что пример источника плоского файла с регулярным выражением и образец источника с разделителями файлов в частности могут помочь - я предполагаю, что файл с разделителями файлов будет более полезен.
Этот ответ не применим к 2005 году, как указано здесь, но в случае, если кто-то сталкивается с этим во время поиска и использует 2008 год, у этого другого вопроса есть рабочий ответ: SSIS 2008 и Undouble
Существует обходное решение, если в соединении с файлом вы удаляете «как текстовый классификатор», вы можете удалить все двойные кавычки позже с производным выражением столбца REPLACE (Item_Name, «\» »,« »). Недостатком является то, что вам нужно будет сделать это для каждого поля
Вероятно, старые новости сейчас, но эта проблема была исправлена в SQL Server 2012. Я смог импортировать тот же файл на сервере 2012 года, который был неудачен на моем сервере 2008 года.
Вчера я столкнулся с подобной проблемой. Мы получили файл csv, который использует запятую (,) как разделитель и двойную кавычку (") в качестве текстового классификатора, но есть поле, содержащее двойную кавычку в двойной кавычки (неэкранированная двойная кавычка внутри строки). Проведя половину дневного поиска , придумал решение ниже,
var fileContent = File.ReadAllLines(fullFilePath); //load the file into a one dimensional string array. fullFilePath is the full path + the file name.
var fileContentUpdated = fileContent.Select(x => new Regex(@"(?<!^)(?<!\,)""(?!\,)(?!$)").Replace(x, "'")).ToArray(); //this line here finds the double quote within the double quote and replace it with single quote
File.WriteAllLines(fullFilePath, fileContentUpdated); //write the string array into the csv file.
Я не вижу другого способа, кроме замены двойной цитаты чем-то другим, чтобы избежать проблемы.