Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 从sql server 2005中的现有文本文件(.txt)中读取_Sql Server 2005_Text Files - Fatal编程技术网

Sql server 2005 从sql server 2005中的现有文本文件(.txt)中读取

Sql server 2005 从sql server 2005中的现有文本文件(.txt)中读取,sql-server-2005,text-files,Sql Server 2005,Text Files,我的gps设备将其数据写入服务器中的文本文件。现在我希望SQLServer读取它并将值存储在表中。如何开始这种场景?任何建议 编辑: 考虑它是一个具有10行的现有文件,并且我已经导入了它。现在,文件更新为新的10行。如何将新行导入sql server ,或者,如果不需要数据转换,则可能需要SSI 见: 确保文件路径正确。如果它与sql server位于同一台计算机上,则它可以是相对的,但如果不是,则需要绝对路径。此外,sql server还需要对该文件位置的权限。这里可能不是这样,但没关

我的gps设备将其数据写入服务器中的文本文件。现在我希望SQLServer读取它并将值存储在表中。如何开始这种场景?任何建议

编辑: 考虑它是一个具有10行的现有文件,并且我已经导入了它。现在,文件更新为新的10行。如何将新行导入sql server

,或者,如果不需要数据转换,则可能需要SSI

见:


确保文件路径正确。如果它与sql server位于同一台计算机上,则它可以是相对的,但如果不是,则需要绝对路径。此外,sql server还需要对该文件位置的权限。这里可能不是这样,但没关系。

您可以使用例如。保存已插入的行数,并在下次分别设置
批量插入
的参数
FIRSTROW
,以便从新行开始


同样,您可以使用实用程序设置
-f
参数。

以下是一个示例解决方案:

/** 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答案的一个实现,但实际上我单独创建了它。也就是说,自从他第一次发布他的答案后,我就对他的答案投了更高的票。

当一个日志文件每秒更新一次时会发生什么。所以批量进口也会有以前的情况records@PandiyaChendur:我不知道你说的是什么意思?一个名为“log”的txt文件每天都会更新