Announcement

Collapse
No announcement yet.

Import aus Excel nach MSSQL

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Import aus Excel nach MSSQL

    Hi,

    habe folgendes Skript:

    PHP Code:
    DECLARE 
    @
    xlsString as nvarchar(255),
    @
    OpenQuery1 as nvarchar(255),
    @
    OpenQuery2 as nvarchar(255),
    @
    OpenQuery3 as nvarchar(255),
    @
    AllQuery as nvarchar(255),
    @
    person as nvarchar(255),
    @
    person2 as varchar(255)
    SET @person2 'Folgende Personen wurde in der Tabelle eingetragen:'
    SET @person 'Anzahl der Eintraege in Tabelle Person:'
    SET @xlsString '$(xlsString)' -- Pfad kommt von einem Batchfile
    SET 
    @OpenQuery1 'Microsoft.Jet.OLEDB.4.0'
    SET @OpenQuery2 'Excel 8.0;Database='+@xlsString+';HDR=YES'
    SET @OpenQuery3 'SELECT * FROM [Tabelle1$]'
    SET @AllQuery 'SELECT * FROM OPENROWSET('''+@OpenQuery1+''', '''+@OpenQuery2+''', '''+@OpenQuery3+''')'
    INSERT INTO zieltabelle(
                [
    haha]
               ,[
    hoho]
               ,[
    huhu])
    EXEC (@AllQuery
    Jetzt ist mein Problem, dass Spalte haha ein nvarchar[15] ist, in der Excel Datei habe ich die Spalte als Standard definiert: Beispiel: 987654321


    NAch dem Import habe ich aber in der Spalte haha nich 987654321
    stehen sondern: 9.87654e+008
    Ich verstehe nicht, wo das passiert?

    hat denn jemand einen Rat für mich?

    LG schnurzli

  • #2
    Hallo,

    zum Test kann man versuchen, ob die Option HDR=YES;IMEX=1 zu einer anderen Darstellung führt. Damit wird ein ImportMixedTypes-Mode aktiviert, der gemischte Spalten immer als Text interpretiert, wenn innerhalb der ersten 8 Zeilen gemischte Daten vorkommen. Wenn mehr als 8 Zeilen geprüft werden sollen, muss im Registry-Zweig HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engi nes\Excel der Parameter TypeGuessRows definiert werden. Ein Wert von 0 bedeutet dass die ersten 16384 Zeilen geprüft werden, um festzustellen, ob der mixed Mode verwendet werden muss oder ob der Datentyp eindeutig bestimmt werden kann.

    Wenn in der XLS-Datei der Wert 987654321 in der 1. Zeile steht, betrachtet die JET Engine die Spalte als numerischen Wert, der mit der von Excel unterstützten Auflösung importiert wird.

    Comment


    • #3
      hi,

      mit imex=1 funktioniert es nur dann, wenn ich innerhalb der ersten 8 zeichen kein reines zahlenfeld habe... also überschrift reicht leider nicht...

      Comment


      • #4
        Hi,

        hast Du mal versucht, was passiert, wenn Du die Spalte in Excel nicht als Standard sondern als Text definierst?

        Gruß frauwue
        docendo discimus

        Comment


        • #5
          hi,

          sorry für die späte antwort. auch das hat nichts genutzt... deshalb hatte ich es mal auf die seite gelegt...

          Comment

          Working...
          X