我使用一个大容量插入来导入一个rpt文件,但是我得到了以下错误:
Msg 4866,第16级,状态1,第1行 大容量装载失败。列在第1行第1列的数据文件中太长。请验证字段终止符和行终止符的指定是否正确。 Msg 7399,第16级,状态1,第1行 OLE DB提供程序"BULK“用于链接服务器"(null)”报告了一个错误。提供程序没有提供有关错误的任何信息。 Msg 7330,第16级,状态2,第1行 无法从OLE DB访问接口"BULK“获取链接服务器"(null)”的行。
我认为这是由于文件列之间的空格,有什么方法我可以修剪这些空间吗?
谢谢!
发布于 2015-11-26 15:15:46
如果您的文件中只有空格,您的文件格式是固定的,您将需要一个格式文件来加载它。
SELECT *
FROM OPENROWSET(BULK 'C:\Users\Admin\Desktop\Extractions\F0005.rpt',
FORMATFILE='C:\myTestSkipField.fmt'
) AS t1;
我在下面包含了一个示例.fmt
文件,使用EmptyField
列映射文件中的前几个字段来映射空间。您可以省略这一点,因为看起来您无论如何都必须使用LTRIM(TRIM([column]))
来修剪您的字段。
9.0
8
1 SQLCHAR 0 4 "" 1 DRSY SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 1 "" 2 Empty1 SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 4 "" 3 DRTT SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 10 "" 4 DRKY SQL_Latin1_General_CP1_CI_AS
5 SQLCHAR 0 1 "" 5 Empty2 SQL_Latin1_General_CP1_CI_AS
6 SQLCHAR 0 30 "" 6 DRDL01 SQL_Latin1_General_CP1_CI_AS
7 SQLCHAR 0 1 "" 7 Empty3 SQL_Latin1_General_CP1_CI_AS
8 SQLCHAR 0 1024 "\n" 8 Remainder SQL_Latin1_General_CP1_CI_AS
在Microsoft 文档中,这是.fmt
文件的文件格式:
https://stackoverflow.com/questions/33941842
复制相似问题