1

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

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

4 ответа4

3

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

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

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

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

1

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

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

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

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

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

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

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

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

Удачи!

1

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

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

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

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

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

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

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

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

Удачи...

0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .