I am trying following procedure:
I have table:
CREATE TABLE [dbo].[organiz] (
[cislo_subjektu] [int] NULL ,
[reference_subjektu] [varchar] (30) COLLATE SQL_Czech_CP1250_CI_AS NULL ,
[nazev_subjektu] [varchar] (100) COLLATE SQL_Czech_CP1250_CI_AS NULL ,
[nazev_zkraceny] [varchar] (40) COLLATE SQL_Czech_CP1250_CI_AS NULL ,
[ulice] [char] (40) COLLATE SQL_Czech_CP1250_CI_AS NULL ,
[psc] [char] (15) COLLATE SQL_Czech_CP1250_CI_AS NULL ,
[misto] [char] (40) COLLATE SQL_Czech_CP1250_CI_AS NULL ,
[ico] [char] (15) COLLATE SQL_Czech_CP1250_CI_AS NULL ,
[dic] [char] (15) COLLATE SQL_Czech_CP1250_CI_AS NULL ,
[uverovy_limit] [money] NULL ,
[stav_limitu] [money] NULL
) ON [PRIMARY]
GO
Format File:
<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="12"/>
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="30" COLLATION="SQL_Czech_CP1250_CI_AS"/>
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Czech_CP1250_CI_AS"/>
<FIELD ID="4" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="40" COLLATION="SQL_Czech_CP1250_CI_AS"/>
<FIELD ID="5" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="40" COLLATION="SQL_Czech_CP1250_CI_AS"/>
<FIELD ID="6" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="15" COLLATION="SQL_Czech_CP1250_CI_AS"/>
<FIELD ID="7" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="40" COLLATION="SQL_Czech_CP1250_CI_AS"/>
<FIELD ID="8" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="15" COLLATION="SQL_Czech_CP1250_CI_AS"/>
<FIELD ID="9" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="15" COLLATION="SQL_Czech_CP1250_CI_AS"/>
<FIELD ID="10" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="30"/>
<FIELD ID="11" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="30"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="cislo_subjektu" xsi:type="SQLINT"/>
<COLUMN SOURCE="2" NAME="reference_subjektu" xsi:type="SQLVARYCHAR"/>
<COLUMN SOURCE="3" NAME="nazev_subjektu" xsi:type="SQLVARYCHAR"/>
<COLUMN SOURCE="4" NAME="nazev_zkraceny" xsi:type="SQLVARYCHAR"/>
<COLUMN SOURCE="5" NAME="ulice" xsi:type="SQLCHAR"/>
<COLUMN SOURCE="6" NAME="psc" xsi:type="SQLCHAR"/>
<COLUMN SOURCE="7" NAME="misto" xsi:type="SQLCHAR"/>
<COLUMN SOURCE="8" NAME="ico" xsi:type="SQLCHAR"/>
<COLUMN SOURCE="9" NAME="dic" xsi:type="SQLCHAR"/>
<COLUMN SOURCE="10" NAME="uverovy_limit" xsi:type="SQLMONEY"/>
<COLUMN SOURCE="11" NAME="stav_limitu" xsi:type="SQLMONEY"/>
</ROW>
</BCPFORMAT>
And XML file located on drive.
When i try bulk insert:
BULK INSERT pokus.dbo.organiz
FROM 'D:\organizace.xml' /* my file */
WITH (FORMATFILE = 'D:\organizpok.xml' /* my format file */)
I get error:
Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row ....
This error occurs with format file created by bcp. When i try to mess a little with format file, i can get to this error:
Bulk load data conversion error (truncation) for row ...
Anyone has experience with this?
SEe this http://www.thescripts.com/forum/thread520822.html is any help, good explanation by Erland.|||Hm, i did not find solution for my problem, or i am blind.
|||It has to look this way:
DECLARE @.X XML
SELECT @.X = X.C
FROM OPENROWSET(BULK
'D:\organizace.xml',
SINGLE_BLOB) AS X(C)
INSERT INTO pokus.dbo.organiz
SELECT
C.value('(./cislo_subjektu/text())[1]', 'int') AS 'cislo_subjektu'
,C.value('(./reference_subjektu/text())[1]', 'varchar(30)') AS 'reference_subjektu'
,C.value('(./nazev_subjektu/text())[1]', 'varchar(100)') AS 'nazev_subjektu'
,C.value('(./nazev_zkraceny/text())[1]', 'varchar(40)') AS 'nazev_zkraceny'
,C.value('(./ulice/text())[1]', 'char(40)') AS 'ulice'
,C.value('(./psc/text())[1]', 'char(15)') AS 'psc'
,C.value('(./misto/text())[1]', 'char(40)') AS 'misto'
,C.value('(./ico/text())[1]', 'char(15)') AS 'ico'
,C.value('(./dic/text())[1]', 'char(15)') AS 'dic'
,C.value('(./uverovy_limit/text())[1]', 'money') AS 'uverovy_limit'
,C.value('(./stav_limitu/text())[1]', 'money') AS 'stav_limitu'
FROM @.X.nodes('/root/organizace') T(C)
SELECT
C.value('*[1]', 'int') AS 'cislo_subjektu'
,C.value('*[2]', 'varchar(30)') AS 'reference_subjektu'
,C.value('*[3]', 'varchar(100)') AS 'nazev_subjektu'
,C.value('*[4]', 'varchar(40)') AS 'nazev_zkraceny'
,C.value('*[5]', 'char(40)') AS 'ulice'
,C.value('*', 'char(15)') AS 'psc'
,C.value('*[7]', 'char(40)') AS 'misto'
,C.value('*', 'char(15)') AS 'ico'
,C.value('*[9]', 'char(15)') AS 'dic'
,C.value('*[10]', 'money') AS 'uverovy_limit'
,C.value('*[11]', 'money') AS 'stav_limitu'
FROM @.X.nodes('/root/organizace') T(C)
No comments:
Post a Comment