Удаление лишних запятых в CSV без использования другого источника данных

У нас есть большая база данных с адресами клиентов, которая была экспортирована из базы данных SQL в CSV. В случае, если у компании есть запятая в их имени, это (предсказуемо) выбрасывает всю базу данных из строя.

к сожалению, есть так много примеров этого (и запятые во второй адресной строке), что весь CSV (~100 тыс. строк) - огромный беспорядок. Очевидное исправление состоит в том, чтобы снова экспортировать данные в другой, не зависящий от запятой формат, но доступ к этой базе данных SQL более или менее невозможно в данный момент... Я попробовал несколько инструментов и мозговой штурм о объединении вещей, чтобы исправить это, но я подумал, что спрашивать не помешает. Спасибо!

15
задан 分かりますか
19.04.2023 14:11 Количество просмотров материала 2971
Распечатать страницу

4 ответа

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

основная проблема в том, что преобразование в простой формат CSV не является биективным - просто нет прямого отображения обратно из файла CSV в исходные данные. Вы можете попытаться сократить эту проблему с помощью эвристики, но для этого потребуется определенное количество сценариев или программирования. Это также зависит от платформы и инструментов, которые у вас есть, и, что не менее важно, от ваших навыков.

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

может быть, вы найдете эвристику, чтобы отличить хотя бы некоторые из "встроенных" запятых по полю, разделяющему запятые.

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

поступательное движение таким образом должно позволить вам преобразовать ваши данные в формат, который лучше подходит, например, используя вкладки в качестве разделителей полей.

вы также должны думать о извлечении только некоторые столбцы и уникальное значение ключа (номер записи?) в первом шаге, и более последнем соответствовать различному обрезки.

запишите, документ, вести учет того, что вы делаете. В противном случае вы сделаете вещи хуже, а не лучше.

удачи!

1
отвечен kdo 2023-04-20 21:59

как программист, мой подход будет заключаться в создании небольшого приложения, которое анализирует файл построчно и проверяет количество запятых в строке (вы должны, я полагаю, знать, сколько правильная строка будет иметь)

если он соответствует ожидаемому значению, то выводится в новый файл с табуляцией, заменяющей запятую.

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

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

3
отвечен Shevek 2023-04-21 00:16

первый вариант-просто подождать, пока у вас снова не будет доступа к базе данных.

в случае, если это не практично, Excel ваш друг CSV (если вы не программист)

вот метод Excel, который я использовал:

  1. импорт CSV в Excel, так что строки вашего файла с правильным количеством запятых в конечном итоге в правильном количестве ячеек в строке Excel. то есть, скажем, у вас есть семь полей с семью правильно расставленными запятыми, которые будут быть проанализированы Excel в семь ячеек с правильными настройками импорта CSV.

  2. теперь возьмите лист excel и перейдите в верхнюю строку и одну ячейку справа от последней ячейки правильной строки. т. е., если у вас есть 7 полей, они будут охватывать от "A"до " G". Перейдите в колонку"H"

  3. на Mac, нажмите команда + стрелка вниз; на ПК, Ctr + стрелка вниз. Это позволит пропустить все пробелы и остановиться на первой ячейке с содержимым. Вручную закрепите строку и переходите к следующей.

  4. Если у вас есть строки, в которых слишком мало полей (запятых), вы можете найти их, перейдя в первую ячейку слева от последней ячейки правильной ячейки. то есть, если у вас есть правильная строка, охватывающая A-G, перейдите к столбцу F и повторите шаг 3.

с 100 000 строк, это возможно только в том случае, если высокий процент ваших строк верны, но вы будете удивлены, как быстро вы можете восстановить файл таким образом. вы можете теперь используйте Excel, чтобы сохранить файл в правильной форме CSV.

удачи...

1
отвечен drewk 2023-04-21 02:33

нет очевидного решения этой проблемы, потому что если поля, содержащие запятые, не помечены каким-то особым образом (и вы не упомянули об этом), компьютерная программа в принципе не может определить, находится ли запятая в адресе или нет. Вы все еще можете использовать некоторые эвристики (например, "если у вас есть пространство перед запятой, это, вероятно, в address") для строк с дополнительными запятыми, но они эвристики, и они будет пропустить. ("Космическая" эвристика-хорошая для начала в любом случае.)

Я могу только помочь, написав shell-скрипт, который будет искать ошибочные строки и редактируем их. Если вам нужно что-то подобное, отправьте записку.

0
отвечен whitequark 2023-04-21 04:50

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх