Текстовый файл фиксированной длины в таблицу данных SQL - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть текстовый файл (~ 100 000 + строки), где каждый столбец имеет фиксированную длину, и мне нужно поместить его в таблицу базы данных SQL Server.Каждый из наших клиентов обязан получать эти данные, но каждый текстовый файл немного отличается, поэтому мы должны вручную войти и настроить расстояние между символами в хранимой процедуре SQL.

Мне было интересно, есть лиТаким образом, мы можем использовать вместо XML / XSD / XSLT.Таким образом, мне не нужно было бы заходить и вручную редактировать хранимые процедуры.

В настоящее время мы делаем следующее:

1.) SQL server stored procedure reads a text file from the disk
2.) Each record is split into an XML element and dumped into a temporary table
3.) Using SQL Server's string manipulation, each element is parsed
4.) Each column is dumped into

Для пояснения, вот пара примеров ....

Текстовый файл одного клиента будет иметь следующее:

Name [12 Characters]
Employer [20 Characters]
Income [7 Characters]
Year-Qtr [5 Characters]

JIM JONES  HOMERS HOUSE OF HOSE100000 20113

Текстовый файл другого клиента будет иметь следующее:

Year-Qtr [5 Characters]
Income [7 Characters]
Name [12 Characters]
Employer [20 Characters]

20113100000 JIM JONES  HOMERS HOUSE OF HOSE

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

Ответы [ 3 ]

0 голосов
/ 02 марта 2012

Excel, Access, все разновидности VB и C # имеют простые в использовании драйверы для обработки текстовых файлов как таблиц виртуальных баз данных, обычно с наглядными пособиями для сопоставления столбцов.И чтение и запись на SQL Server, конечно, торт.Я бы начал там.

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

0 голосов
/ 02 марта 2012

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

Я сам не пробовал, но это стоит посмотреть.

0 голосов
/ 02 марта 2012

Использование функций обработки SQL Server xml для импорта текстового файла фиксированной длины выглядит как обратный способ действий (без обид).

Вам не нужно создавать собственное приложение, Microsoft уже создалаодин для тебя.Он гениально называется BCP Utility .При необходимости вы можете создать файл формата , который сообщает BCP Utility, как импортировать ваши данные.Самое приятное то, что это невероятно быстро, и вы можете импортировать данные в SQL Server с удаленного компьютера (так как в этом файле не обязательно располагаться в окне SQL Server для его импорта)

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

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

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