2015-12-10 8 views
0

Я должен импортировать файл (возможно .csv или .txt) через SSIS-пакет. Проблема заключается в том, что файл является файлом Excel на данный момент, и написано очень читаемый человеком, который означает, что он выглядит примерно так:Импортировать файл excel с неправильным порядком столбцов

Name1; имя_столбца1; Данные; Данные; Данные; ...

Наименование1; имя_столбца2; Данные; Данные; Данные; ...

Наименование1; ColumnName3; Данные; Данные; Данные; ...

Наименование2; имя_столбца1; Данные; Данные; Данные; ...

Наименование2; имя_столбца2; Данные; Данные; Данные; ...

Дело в том, что мне нужен заказ на совместимость с базой данных для импорта. Я попытался импортировать все в фиктивную таблицу с такими столбцами, как Value0, Value1, Value3, ... так же, как этот файл выглядит в данный момент, а затем динамически создавать новую таблицу с именами столбцов, которые являются значениями, содержащимися в Value1 моего манекена. Но как я могу вставить значения в правый столбец? А также я не думаю, что это хороший способ импорта файлов ... (надеюсь, вы понимаете, что я имею в виду)

Кто-нибудь есть идеи, как обрабатывать эти файлы?

Заранее благодарен!

ответ

0

Предполагая, следующая структура:

col1;col2;col3..... 
Name1; ColumnName1; Data; Data; Data;... 

пытаются сделать таблицу, как это:

colA:colB:colC 
name1:colName1: all values together 
name1:colName2: all values together 
name2:colName1: all values together 
name2:colName2: all values together 

Вы можете получить результат, как этот:

SELECT 
    colA, group_concat(colC SEPARATOR ',') 
FROM 
    table 
GROUP BY 
    colA; 

даст вам следующий результат :

name1:val1,val2,val3 
name2:val1,val2,val3 

можно затем импортировать его с помощью SSIS

+0

Похоже способ пойти, но у меня две проблемы с этим ... Прежде всего, я забыл сказать, что я использую базу данных MSSQL (не означает, что нет group_concat), но я думаю, что смогу обойти это. И вторая проблема заключается в том, что я понятия не имею, как получить значения вместе. Я попытался вставить все, кроме как получить ошибку, что данные будут длинными («String или двоичные данные будут усечены».) –

+0

если у вас есть excel вы можете использовать функцию concatenate, чтобы объединить все значения вместе, либо увеличить размер столбца в sql, либо использовать тип текстового столбца для вставки большого количества данных. – thepiyush13

+0

в порядке с проблемой с длинными данными (иногда я немного глуп. .. Я установил тип данных в varchar (50): D) ... –

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