Вот пример решения:
/** Table to hold GPS data **/
CREATE TABLE Pings (
RowID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
PingDate DATETIME,
Lat FLOAT,
Long FLOAT
)
/** View for bulk insert **/
CREATE VIEW V_Pings AS
SELECT
PingDate,
Lat,
Long
FROM Pings
Данные GPS поступают из файла с разделителями канала> C:\GPS\Pings
2010/01/01 00:00:00|30.1|50.1
2010/01/01 00:00:01|30.1|50.2
2010/01/01 00:00:02|30.1|50.3
2010/01/01 00:00:03|30.1|50.4
2010/01/01 00:00:04|30.1|50.5
У вас есть хранимая процедура, которая вызываетсяпериодически с помощью агента SQL:
CREATE PROCEDURE usp_LoadPings AS
DECLARE
@firstRow INT,
@sql NVARCHAR(1000)
SELECT TOP 1 @firstRow = RowID + 1
FROM Pings ORDER BY RowID DESC
SET @sql = N'
BULK INSERT V_Pings
FROM ''C:\GPS\Pings.txt''
WITH (
FIELDTERMINATOR =''|'',
ROWTERMINATOR =''\n'',
FIRSTROW = ' + CAST(@firstRow AS NVARCHAR(50)) + '
)'
EXEC(@sql)
Хранимая процедура не будет загружать данные, если не будет нового набора строк, начинающегося после последней строки, загруженной в таблицу.
Я понимаю, что это выглядит простокак реализация ответа Devmake, но я на самом деле создал его отдельно.Тем не менее, я проголосовал за его ответ, так как он опубликовал свой первый.