我正在尝试使用以下脚本将XML数据批量加载到SQL Server 2008:
CREATE TABLE #WorkingTable (Data XML)
INSERT INTO #WorkingTable
SELECT *
FROM OPENROWSET(BULK'C:\Users\\MassDotParknRideLots.xml',SINGLE_BLOB) AS data
DECLARE @XML AS XML
,@hDoc AS INT
SELECT @XML = Data FROM #WorkingTable
EXEC sp_xml_preparedocument @hDoc OUTPUT , @XML
--DECLARE @LocationSeedValue INT,@NumLocations INT,@TransiFacSeedValue INT, @PiFacSeedValue INT
CREATE TABLE #Location_PNR(
[locationDesc] [varchar](150) NOT NULL,
[intersection] [varchar](150) NULL,
[featureType] [varchar](16) NOT NULL,
[x_coordinate] [float] NULL,
[y_coordinate] [float] NULL,
[city] [varchar](50) NULL,
[state] [varchar](16) NULL,
[creationDate] [datetime] NOT NULL,
[publicLocationDescription] [varchar](150) NULL,
[locationIDX] [int] IDENTITY(1,1) NOT NULL,
[locationID] [varchar](50) NULL,
[LastUpdated] [datetime] NULL,
[effectiveDate] [datetime] NULL
)
CREATE TABLE #tbl_Transit_Facility(
[TransitFacilityIDX] [int] IDENTITY(1,1) NOT NULL,
[FacilityName] [varchar](1024) NULL,
[FacilityDescription] [varchar](1024) NULL,
[Owner] [varchar](1024) NULL,
[TransitFacilityID] [varchar](50) NULL,
[LocationPTR] [int] NULL,
[LastUpdated] [datetime] NULL
)
CREATE TABLE #PiParkingFacility(
[PI_ParkingFacID_id] [int] IDENTITY(1,1) NOT NULL,
[Spddlandmarkname] [nvarchar](1024) NULL,
[spddLandmarkdesc] [nvarchar](255) NULL,
[SpddCityname] [nvarchar](30) NULL,
[SpddState] [varchar](50) NULL,
[PiddParkingownerName] [nvarchar](60) NULL,
--[PiddParkingSpacesTotal] [int] NULL,
[PiddParkingtype] [int] NULL,
[PiddparkingRates] [nvarchar](255) NULL,
--[PiddParkinghoursofoperations] [nvarchar](255) NULL,
--[PiddTransithoursofoperations] [nvarchar](255) NULL,
[SPddlatitude] [float] NULL,
[spddlongitude] [float] NULL,
[Cptddactivationdate] [int] NULL,
[TransitFacilityPtr] [int] NOT NULL
)
--SET @LocationSeedValue = IDENT_CURRENT('Location')+1;
--SET @TransiFacSeedValue = IDENT_CURRENT('tbl_Transit_Facility')+1;
--SET @PiFacSeedValue = IDENT_CURRENT('PiParkingFacility')+1;
--dbcc checkident (#Location_PNR, reseed, @LocationSeedValue);
--dbcc checkident (#tbl_Transit_Facility, reseed, @TransiFacSeedValue);
--dbcc checkident (#PiParkingFacility, reseed, @PiFacSeedValue);
--select IDENT_CURRENT('#PiParkingFacility')
INSERT INTO #Location_PNR(
[locationDesc] ,
[intersection],
[featureType],
[x_coordinate],
[y_coordinate],
[city],
[state],
[creationDate],
[publicLocationDescription],
[locationID],
[LastUpdated],
[effectiveDate]
)
SELECT
LOCATION locationDesc,LOCATION intersection,'transitFacility' featureType,
x x_coordinate,y y_coordinate, TOWN City, 'MA' State,
getdate() creationDate,LOCATION publicLocationDescription,
pnrr_pnr_id locationID,
getdate() LastUpdated,getdate() effectiveDate
FROM OPENXML (@hDoc, 'Import/Row', 2)
with(
pnrr_pnr_id varchar(50),
shapeid varchar(50),
x varchar(50),
y varchar(50),
OBJECTID varchar(50),
TOWN varchar(50),
LOCATION varchar(50),
STATUS varchar(50),
DISTRICT varchar(50),
OPERATOR varchar(50),
BIKE_RACKS varchar(50),
SHELTERS varchar(50),
PHONES varchar(50),
LIGHTS varchar(50),
FENCES varchar(50),
SIGNS varchar(50),
OWNER varchar(50),
CAPACITY varchar(50),
BUS_SERVIC varchar(50),
RAIL_SERVI varchar(50),
BOAT_SERVI varchar(50),
MAP_ID varchar(50),
MPO varchar(50),
SYMBOL varchar(50)
)
--Transit facilities
INSERT INTO #tbl_Transit_Facility(
[FacilityName],
[FacilityDescription],
[Owner],
[TransitFacilityID],
[LocationPTR],
[LastUpdated]
)
SELECT LOCATION FacilityName,LOCATION FacilityDescription,
Facs.owner Owner,
pnrr_pnr_id TransitFacilityID,LP.LocationIDX LocationPTR, getdate() LastUpdated
FROM OPENXML (@hDoc, 'Import/Row', 2)
with(
pnrr_pnr_id varchar(50),
shapeid varchar(50),
x varchar(50),
y varchar(50),
OBJECTID varchar(50),
TOWN varchar(50),
LOCATION varchar(50),
STATUS varchar(50),
DISTRICT varchar(50),
OPERATOR varchar(50),
BIKE_RACKS varchar(50),
SHELTERS varchar(50),
PHONES varchar(50),
LIGHTS varchar(50),
FENCES varchar(50),
SIGNS varchar(50),
OWNER varchar(50),
CAPACITY varchar(50),
BUS_SERVIC varchar(50),
RAIL_SERVI varchar(50),
BOAT_SERVI varchar(50),
MAP_ID varchar(50),
MPO varchar(50),
SYMBOL varchar(50)
) Facs JOIN #Location_PNR LP ON Facs.pnrr_pnr_id = LP.locationID
--PIParking facilities
INSERT INTO #PiParkingFacility(
[Spddlandmarkname],
[spddLandmarkdesc],
[PiddParkingownerName],
[SpddCityname],
[SpddState],
--[PiddParkinghoursofoperations] [nvarchar](255) NULL,
--[PiddTransithoursofoperations] [nvarchar](255) NULL,
--[SPddlatitude],
--[spddlongitude],
--[Cptddactivationdate],
[TransitFacilityPtr]
)
SELECT LOCATION Spddlandmarkname,LOCATION spddLandmarkdesc,
PiFacs.owner PiddParkingownerName, PiFacs.TOWN SpddCityname,'MA' SpddState,
Facs.TransitFacilityIDX TransitFacilityPtr
FROM OPENXML (@hDoc, 'Import/Row', 2)
with(
pnrr_pnr_id varchar(50),
shapeid varchar(50),
x varchar(50),
y varchar(50),
OBJECTID varchar(50),
TOWN varchar(50),
LOCATION varchar(50),
STATUS varchar(50),
DISTRICT varchar(50),
OPERATOR varchar(50),
BIKE_RACKS varchar(50),
SHELTERS varchar(50),
PHONES varchar(50),
LIGHTS varchar(50),
FENCES varchar(50),
SIGNS varchar(50),
OWNER varchar(50),
CAPACITY varchar(50),
BUS_SERVIC varchar(50),
RAIL_SERVI varchar(50),
BOAT_SERVI varchar(50),
MAP_ID varchar(50),
MPO varchar(50),
SYMBOL varchar(50)
) PiFacs JOIN #tbl_Transit_Facility Facs ON PiFacs.pnrr_pnr_id = Facs.TransitFacilityID
select * from #PiParkingFacility
SET IDENTITY_INSERT location ON
--insert into database
INSERT INTO location(
[locationDesc]
,[intersection]
,[featureType]
,[x_coordinate]
,[y_coordinate]
,[city]
,[state]
,[creationDate]
,[publicLocationDescription]
,[locationIDX]
,[locationID]
,[LastUpdated]
,[effectiveDate]
)
Select
[locationDesc]
,[intersection]
,[featureType]
,[x_coordinate]
,[y_coordinate]
,[city]
,[state]
,[creationDate]
,[publicLocationDescription]
,[locationIDX]
,[locationID]
,[LastUpdated]
,[effectiveDate]
FROM #Location_PNR
SET IDENTITY_INSERT location OFF
INSERT INTO tbl_Transit_Facility(
[FacilityName],
[FacilityDescription],
[Owner],
[TransitFacilityID],
[LocationPTR],
[LastUpdated]
)
SELECT
[FacilityName],
[FacilityDescription],
[Owner],
[TransitFacilityID],
[LocationPTR],
[LastUpdated]
from #tbl_Transit_Facility
INSERT INTO PiParkingFacility(
[Spddlandmarkname],
[spddLandmarkdesc],
[PiddParkingownerName],
[SpddCityname],
[SpddState],
--[PiddParkinghoursofoperations] [nvarchar](255) NULL,
--[PiddTransithoursofoperations] [nvarchar](255) NULL,
--[SPddlatitude],
--[spddlongitude],
--[Cptddactivationdate],
[TransitFacilityPtr]
)
SELECT
[Spddlandmarkname],
[spddLandmarkdesc],
[PiddParkingownerName],
[SpddCityname],
[SpddState],
--[PiddParkingSpacesTotal],
--[PiddParkingtype],
--[PiddparkingRates],
--[PiddParkinghoursofoperations] [nvarchar](255) NULL,
--[PiddTransithoursofoperations] [nvarchar](255) NULL,
--[SPddlatitude],
--[spddlongitude],
--[Cptddactivationdate],
[TransitFacilityPtr]
FROM #PiParkingFacility
select * from location where state = 'MA';
--select * from location where state = 'PA';
Insert into PiPNRAdmin(DontDisplayon511,PI_ParkingFacID_id)
Select 1 DontDisplayon511, PI_ParkingFacID_id from #PiParkingFacility
XML中的列/元素名称是:
shapeid x y OBJECTID TOWN LOCATION STATUS DISTRICT OPERATOR BIKE_RACKS SHELTERS PHONES LIGHTS FENCES SIGNS OWNER CAPACITY BUS_SERVIC RAIL_SERVI BOAT_SERVI MAP_ID MPO SYMBOL
在#WorkingTable
中输入了1行..但之后有0行上传;
不知道我哪里错了......
提前致谢。