Welcome to Sign in | Help
in Search

metoda de a importa dintrun fisier excel in sql

Last post 06-14-2011, 9:08 PM by xmldeveloper. 8 replies.
Sort Posts: Previous Next
  •  05-18-2011, 10:10 AM 8748

    metoda de a importa dintrun fisier excel in sql

    Salutare,

    Am o mica problema...

    Cum pot crea o procedura in cadrul unui cub astfel incat sa-mi importe date dintr-un fisier excel in cubul respectiv? Am incercat OPENROWSET si OPENQUERRY dar fara nici un real succes. OS-ul pe care sta serverul de SQL este Win Server 2008 x64...

    Are cineva vreo idee despre cum as putea face asta?

    Merci frumos! :)
  •  05-18-2011, 11:15 AM 8749 in reply to 8748

    Re: metoda de a importa dintrun fisier excel in sql

    Importa datele din fisierul Excel in baza de date pe care o folosesti ca sursa. Cel mai bine te ajuta aici SSIS.
    Daca nu am inteles bine ce vrei, revino cu amanunte.
  •  05-18-2011, 11:21 AM 8750 in reply to 8748

    Re: metoda de a importa dintrun fisier excel in sql


    1. Exporţi datele într-un fişier txt-csv şi
    BULK INSERT  dbo.Produs
    FROM    'D:\SursaDate\Book1.txt'
    WITH
    (
          CODEPAGE = 'RAW',
          FIELDTERMINATOR = ',',
          ROWTERMINATOR = '\n'
    )

    2. Exporţi datele într-un fişier txt-csv şi
    --INSERT ...
    SELECT    x.*
    FROM    OPENROWSET(BULK 'D:\SursaDate\Book1.txt', FORMATFILE = 'D:\SursaDate\Produs.fmt') x


    Pentru a genera fişierul *.fmt foloseşti utilitarul bcp.

    3. Instalezi data provider-ul pe 64b Microsoft.ACE.OLEDB.12.0
    + OPENQUERY

    4. Exporţi datele într-un fişier txt-csv ş foloseşti utilitarul bcp
    C:\Windows\system32>bcp Test.dbo.Produs in d:\sursadate\book1.txt -T -f d:\sursadate\produs.fmt
    Pentru a genera fişierul *.fmt foloseşti utilitarul bcp.

    5. Daca este un import periodic încearcă să foloseşti SQL Server Integration Services (SSIS).
  •  05-18-2011, 4:05 PM 8751 in reply to 8750

    Re: metoda de a importa dintrun fisier excel in sql

    Merci bogdan, merci diana, pentru informatiile oferite.
    Acum, vin cu lamuriri suplimentare:

    Mai jos veti gasi ce-am facut pana acum...problema cu snippetul de fata este ca-mi scoate informatiile din stringul de pe linia 7...dar mi le aranjeaza pe linie, si nu pe coloane...asta incercam sa fac...aveti vreo idee?

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    declare @Delimiter varchar(1)
    declare @String varchar(8000)
    declare @idx int
    declare @slice varchar(8000)

    select @idx = 1
    set @string = 'Mihai, Ion, Popescu, Nicolaescu'
    Set @delimiter = ','
    --  if len(@String)<1 or @String is null return

      while @idx!= 0
      begin
        set @idx = charindex(@Delimiter,@String)
        if @idx!=0
          set @slice = left(@String,@idx - 1)
        else
          set @slice = @String
        select @slice
    --    if(len(@slice)>0)
    --      insert into @temptable(Items) values(@slice)

        set @String = right(@String,len(@String) - @idx)
        if len(@String) = 0 break
      end

  •  05-18-2011, 4:24 PM 8752 in reply to 8751

    Re: metoda de a importa dintrun fisier excel in sql

    Te rog explica pe larg ce vrei sa faci. Eu una nu inteleg ce legatura are exemplul de "split string" cu problema ta (import de date din Excel) :)
  •  05-18-2011, 4:38 PM 8753 in reply to 8752

    Re: metoda de a importa dintrun fisier excel in sql

    (!) stringul de valori expuse este fictiv

    ok...

    am intr-un excel niste valori aranjate pe randuri. excelul e destul de mare (>150.000 randuri + >80.000 coloane). am introdus la sfarsitul fiecarei valori '|' si ',' ca delimitator dintre valori.
    as vrea sa import valorile intr-o baza de date, doar ca folosind codul de mai sus, datele imi sunt importate ca randuri (pe care vreau sa le transpun in locul coloanelor).

    intrebarea mea este: cum fac sa-mi recunoasca '|' ca fiind capat de valoare si nu de rand si ',' ca fiind cap de rand si nu de valoare si cum fac ca datele scoate de string sa mi le transpuna pe coloane si nu pe randuri?

  •  05-18-2011, 5:07 PM 8754 in reply to 8753

    Re: metoda de a importa dintrun fisier excel in sql

    :-)
    1. Ce versiune de SQL Server folosești ? SELECT @@VERSION
    2. Ce format are fișierul Excel ? 2003/2007 ?
    3. Publică câteva linii relevante din fișierul Excel.
    4. Precizează structura tabelei/tabelelor destinație din SQL Server.
    5. Care sunt regulile de conversie Excel -> SQL Server ?
  •  05-19-2011, 10:15 AM 8755 in reply to 8753

    Re: metoda de a importa dintrun fisier excel in sql

    Fisierul Excel contine cumva date dintr-un "legacy system"?
  •  06-14-2011, 9:08 PM 8779 in reply to 8751

    Re: metoda de a importa dintrun fisier excel in sql

    SQL Server permite specificarea unui delimitator la importul unui fisier text.
    Va recomand sa folositi Import / Export Wizard.

    Cristian Andrei Lefter, SQL Server MVP
    MCT, MCSA, MCDBA, MCAD, MCSD .NET,
    MCTS, MCITP - Database Administrator SQL Server 2005
    http://sqlserver.ro
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems