用于将数据从平面文件(文本文件).XYZ文件导入SQL表的脚本
我正在尝试创建一个脚本来将平面文件导入SQL Server表。我尝试使用导入向导,但由于我需要定期执行此操作,因此我必须创建一个SQL函数才能实现这一点,我不确定如何执行此操作。平面文件以以下格式存储:用于将数据从平面文件(文本文件).XYZ文件导入SQL表的脚本,sql,sql-server,Sql,Sql Server,我正在尝试创建一个脚本来将平面文件导入SQL Server表。我尝试使用导入向导,但由于我需要定期执行此操作,因此我必须创建一个SQL函数才能实现这一点,我不确定如何执行此操作。平面文件以以下格式存储: 19350.000 45978.000 1560.631 19352.000 45978.000 1560.234 19354.000 45978.000 1560.021 19356.000 45978.000 1559.809 1935
19350.000 45978.000 1560.631
19352.000 45978.000 1560.234
19354.000 45978.000 1560.021
19356.000 45978.000 1559.809
19358.000 45978.000 1559.596
我尝试了以下方法:
CREATE TABLE #TempTable
(
Id int identity (1,1),
X float,
Y float,
Z float
)
BULK INSERT #TempTable FROM
'\\fcgwnt01\share.$\StandardHaulage\TEST\Automated\EVO\SurfaceFiles\EVO 2019-
01-23.xyz'
WITH (FIELDTERMINATOR = '**\t**', ROWTERMINATOR = '\n')
SELECT * INTO [dbo].[SHM_EVO_SURFACE_DETAILS] FROM #TempTable
--Drop temporary table
DROP TABLE #TempTable
但是我得到了以下错误
Msg 4866,16级,状态1,第12行
批量加载失败。数据文件中第1行第1列的列太长。验证是否正确指定了字段终止符和行终止符。
信息7399,16级,状态1,第12行
链接服务器(null)的OLE DB提供程序“大容量”报告了错误。提供程序没有提供有关错误的任何信息。
信息7330,16级,状态2,第12行
无法从链接服务器(null)的OLE DB提供程序“大容量”中获取行
您可以尝试使用大容量插入-SSIS是您的一个选项吗?不,很遗憾,SSIS不是一个选项我假设这是一个制表符分隔的文件?如果是这样,为什么您使用FIELDTERMINATOR='\t'而不是FIELDTERMINATOR='\t'?我的意思是“asterix asterix\t asterix asterix”-似乎Stackoverflow将asterix视为格式化代码您可以尝试使用大容量插入-SSIS是您的一个选项吗?不,不幸的是,SSIS不是一个选项我假设这是一个制表符分隔的文件?如果是这样,为什么使用FIELDTERMINATOR='\t'而不是FIELDTERMINATOR='\t'?我的意思是“asterix asterix\t asterix asterix”—Stackoverflow似乎将asterix视为格式化代码