Hej! känner inte till nåt färdigt verktyg, men låter som om det skulle vara en relativt smal sak att fixa ett litet skript som gör det.. Kan du inte läsa in det i SQL direkt? OPENXML är en utmärkt funktion för det. Det är något sådant jag letar efter. Nedanstående exempel ur hjälpen till OPENXML Jag som inte är skript-programmerare behöver något som någon annan utvecklat. @doc kan vara av datatypen ntext (~2Gb) Här är ett exempel på hur man kan importera en XML-fil mha OPENXML. Knåpade ihop ett VB-script som läser en xml-fil och skriver till txt-fil. <b>SQL har (mig veterligen) ingen text-import funktion. Det får man skriva själv... </b> Då menar jag ju språket (T-SQL) egentligen. naturligtvis går det att importera text till en SQL Server.Konvertera XML till TXT
Jag har en XML-fil som innehåller 190.000 poster av exakt likadan struktur (samma fält).
Den vill jag konvertera till en semikolon-separerad textfil för vidare inläsning i en tabell i
SQLServer 2000. Känner Ni till något bra verktyg (helst gratis) som kan göra detta???Sv: Konvertera XML till TXT
Sv: Konvertera XML till TXT
/mickeSv: Konvertera XML till TXT
leder dock till två frågor:
- Hur kan man skicka xml-filen direkt till @doc utan att klippa in den som i exemplet?
- @doc är här deklarerat till max 1000 tecken. Min fil är på 47 MB. Kan man deklarera så mycket?
DECLARE @idoc int
DECLARE @doc varchar(1000)
SET @doc ='
<ROOT>
<Customer CustomerID="VINET" ContactName="Paul Henriot">
<Order CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00">
<OrderDetail OrderID="10248" ProductID="11" Quantity="12"/>
<OrderDetail OrderID="10248" ProductID="42" Quantity="10"/>
</Order>
</Customer>
<Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">
<Order CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00:00">
<OrderDetail OrderID="10283" ProductID="72" Quantity="3"/>
</Order>
</Customer>
</ROOT>'
--Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
-- Execute a SELECT statement that uses the OPENXML rowset provider.
SELECT *
FROM OPENXML (@idoc, '/ROOT/Customer',1)
WITH (CustomerID varchar(10),
ContactName varchar(20))Sv: Konvertera XML till TXT
Sv: Konvertera XML till TXT
SQL har (mig veterligen) ingen text-import funktion. Det får man skriva själv...
/mickeSv: Konvertera XML till TXT
http://www.sqlxml.org/faqs.aspx?faq=39
Om du inte vill använda VB eller liknande för att läsa XML-filen, kan du ju göra ett DTS-paket som läder in hela filen till en TEXT-kolumn och därefter använda den kolumnen i OPENXML.
/PeterSv: Konvertera XML till TXT
Exempel: Book.xml
<?xml version="1.0" encoding="iso-8859-1" ?>
<Root>
<Book>
<Title>Invandrarna</Title>
<Author>W. Moberg</Author>
</Book>
<Book>
<Title>Utvandrarna</Title>
<Author>W. Moberg</Author>
</Book>
<Book>
<Title>En programmerares bekännelser</Title>
<Author>B. Gates</Author>
</Book>
</Root>
Scriptet ser då ut så här:
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objXMLFile = objFSO.OpenTextFile("C:\Book.xml", 1)
Set objTXTFile = objFSO.CreateTextFile ("C:\Book.txt", 1)
strTag = "" 'Lagrar upp en tagg
strValue = "" 'Lagrar upp ett värde
Do Until objXMLFile.AtEndOfStream
strChar = objXMLFile.Read(1) 'Läs ett tecken
If strChar = "<" Then 'Här börjar en tagg
strTyp = "Tag"
strTag = ""
End If
If strChar = ">" then 'Här slutar en tagg
strTyp = "Value"
strTag = strTag + strChar 'Haka på >-tecknet
'Är det en slut-tagg för ett fält fångas värdet
If strTag = "</Title>" Then strTitle = strValue
If strTag = "</Author>" Then strAuthor = strValue
'Är det slut-tagg för posten skapas en utrad
If strTag = "</Book>" Then
strLine = strTitle+";"+strAuthor
objTXTFile.WriteLine (strLine)
End If
strValue = "" 'Påbörja nytt värde
intValueChars = 0 'Nolla värde-teckenräknare
End If
If strTyp = "Tag" Then 'Vi håller på med tagg
strTag = strTag + strChar 'Addera till taggen
End If
If strTyp = "Value" Then 'Vi håller på med värde
intValueChars = intValueChars + 1 'Öka värde-teckenräknaren
If intValueChars > 1 Then 'För att slippa <-tecknet i värdet
strValue = strValue + strChar 'Addera till värdet
End If
End If
Loop
Wscript.Echo "Klart!"
Utdatafilen Book.txt:
Invandrarna;W. Moberg
Utvandrarna;W. Moberg
En programmerares bekännelser;B. GatesSv: Konvertera XML till TXT
njaoenjae , du kan ju lägga upp en odbc koppling mot en textfil , (i kontrollpanelen)
och sedan använda importfunktionen i enterprisemanagern för att importera från din odbc koppling till sql databasen..
//RogerSv: Konvertera XML till TXT
Ursäkta min luddighet :)
/micke