Пригодно ли любое программное обеспечение для импорта текста с выравниванием по столбцам? - PullRequest
0 голосов
/ 04 августа 2009

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

Excel 2K3 и многие другие компоненты Microsoft, которые, похоже, имеют общую кодовую базу (например, параметры импорта для SQL2K), пытаются выяснить разрывы столбцов для вас. К сожалению, они смотрят только на первые n строки и часто совершенно не правы.

OpenOffice.Org 3.1 имеет диалоговое окно импорта почти точно так же, как Excel 2K3, но даже не пытается угадать разрывы столбцов для вас. А последняя версия Numbers вообще не поддерживает импорт с выравниванием по столбцам.

Очевидно, что данные с выравниванием по столбцам нежелательны по ряду причин, но многие старые программы (в частности, собственные программы, которые распространяются в разных компаниях) экспортируют данные в этом формате, поэтому мне приходится обрабатывать их время от времени. Конечно, где-то НЕКОТОРЫЕ программы успешно импортируют его, и я сам не кодирую утилиту импорта или не указываю вручную, где начинаются и останавливаются двенадцать миллиардов столбцов?

OSX, Windows, что угодно. Я открыт для предложений. Конечная цель состоит в том, чтобы поместить его в таблицу SQL Server, но просто вставить его в файл Excel / XML / с разделителями табуляции / etc в это время было бы неплохо, поскольку оттуда достаточно легко войти в SQL Server.

Ответы [ 5 ]

2 голосов
/ 04 августа 2009

Я склонен нормализовать такие данные с помощью awk - возможно, при создании файла csv - перед попыткой импортировать их в Excel.

См. Руководство пользователя awk .

1 голос
/ 04 августа 2009

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

Как упомянул один из авторов, вы можете использовать awk или, если вам больше нравится .NET, тогда вы можете использовать FileHelpers . Это библиотека с открытым исходным кодом .NET, которая хорошо выполняет чтение и запись как файлов фиксированной длины, так и файлов с разделителями. Недостатком является то, что вы будете создавать приложение .NET для выполнения работы (либо вставляя непосредственно в БД, либо, возможно, создавая выходной файл. С другой стороны, после создания вы можете снова использовать классы отображения, если получите тот же формат файла.

1 голос
/ 04 августа 2009

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

135464876
647873159
345467575

Если SQL Server является конечным пунктом назначения, изучили ли вы мастер импорта SQL Server?

Щелкните правой кнопкой мыши свою базу данных в Management Studio и выберите Задачи-> Импорт данных. Продолжайте и выберите «Плоский файл» в качестве источника данных. В раскрывающемся списке формата измените значение с разделителем на фиксированную ширину. Слева вы можете теперь использовать экран Столбцы, чтобы нарисовать разделители столбцов. Также имеется расширенный экран предварительного просмотра.

0 голосов
/ 05 апреля 2012

Если вы сохраните свой файл как текстовый файл и попытаетесь открыть это в Microsoft Excel 2007 и выберите «Фиксированная ширина», Excel будет «угадывать», где происходят перерывы (на основе пробел), но вы можете изменить, где столбец произойдет разрыв поля Приложение имеет вертикальные линии, которые могут быть перемещены влево или вправо X символов. превосходить будет «угадывать», где происходят разрывы, но если это неправильно угадывает, вы все еще можете изменить, где разрывы поля должно произойти. На шаге 2 мастера просто переместите вертикальные линии влево или вправо, если вам нужно изменить догадки Excel о том, где разрывы полей являются. Вы можете увидеть, какой номер символа поле перерыв происходит перед импортом.

0 голосов
/ 26 августа 2009

Попробуйте это демо (я был в команде разработчиков):

Персонаж 4

Установите, запустите программу, перейдите в Инструменты | Преобразование ASCII | Импорт из ASCII.

Импортируется в DBF / FoxPro, но вы можете экспортировать этот файл в один из упомянутых вами форматов.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...