2013-07-25 4 views
1

Я работаю над проектом, который в основном влечет за собой импорт CSV-файла в базу данных SQL Server 2008 R2. Файл CSV создается из файла Excel, который заполняется «менеджером» с PR-часами для его сотрудников. Это также включает в себя некоторую дополнительную информацию, такую ​​как работа и этап работы сотрудников, а также количество часов для оборудования (если используется).SQL Server 2008 - TSQL Чтение файла CSV

Как только вы создаете файл CSV для этого, это не совсем обычный CSV-файл на основе столбцов. Это больше похоже на CSV-файл на основе строки, причем каждая строка является уникальной. Из-за этого оговорки я не могу сделать прямой дамп (используя BULK insert или OPENROWSET) для SQL, что существенно создаст таблицу (temp) с соответствующими данными, заполненными столбцами.

Я ищу, чтобы использовать поля в файле CSV на основе «местоположения» этого поля в строке.

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

Я исследовал немного, и вот что я придумал до сих пор:

читает CSV-файлы в временную таблицу с помощью пользовательской функции SQL (Чтение строк из файла) https://www.simple-talk.com/sql/t-sql-programming/reading-and-writing-files-in-sql-server-using-t-sql/

Это интересно. Сбрасывает весь файл как BLOB, а затем вы можете просеивать данные. http://www.mssqltips.com/sqlservertip/1643/using-openrowset-to-read-large-files-into-sql-server/

Наконец, это одно важное разделяет строки и создает отдельные записи в строке. Интересно .. http://ask.sqlservercentral.com/questions/17408/how-to-read-a-text-file.html

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

К моделям: Если я разместил что-то (особенно ссылки), которые не должны быть здесь, пожалуйста, не стесняйтесь удалять его. Прошу прощения, если я это сделал.

Большое спасибо .. Надеемся услышать положительные ответы! :)

теплыми пожеланиями, Pranav

+0

Я полагаю, что загрузка непосредственно из Excel не может быть и речи? – tkendrick20

+0

будет работать функция UNPIVIOT/PIVOT? т.е. сбрасывать файл, а затем использовать хранимый процесс для упорядочения данных, как вы хотите? –

+0

@ tkendrick20 Я не могу использовать Excel напрямую, так как это не совсем файл excel. У него нет определенных «столбцов». CSV-файл, созданный из этого файла Excel, представляет собой файл с «строками» данных, которые не имеют связанных столбцов FIXED. – SillyCoda

ответ

0

Если файл не является слишком большой, другой вариант заключается в последующей обработке файла в Excel с помощью VBA макросов. Конечно, вам нужно будет ускорить использование объектной модели Excel и VBA, но функция записи делает ее довольно простой. Одно из преимуществ подхода VBA заключается в том, что, похоже, вы действительно хотите выполнять обработку строк за строкой, а VBA лучше для этого, тогда как SQL лучше для операций на основе набора.

Смежные вопросы