我想使用 SSIS 创建数据库表平面文件导出,然后将它们导入到各种分布式 SQL Express 安装中。正如您可能猜到的,SSIS 在 Express 版本中不可用。当我进行批量插入时,它会出错:
Msg 4866, Level 16, State 8, Line 1
The bulk load failed. The column is too long in the data file for row 1, column 5. Verify that the field terminator and row terminator are specified correctly.
生成的文件是 ascii (1252),字段之间有 char(09) (tab),char(0d) char(0a) 结束一行(我认为是 \r\n)。
这是格式文件(第 4 列是列的宽度):
9.0
5
1 SQLCHAR 0 12 "\t" 1 Record_ID ""
2 SQLCHAR 0 498 "\t" 2 Filename SQL Latin1 General CP1 CI AS
3 SQLCHAR 0 498 "\t" 3 Path SQL Latin1 General CP1 CI AS
4 SQLCHAR 0 12 "\t" 4 Width ""
5 SQLCHAR 0 12 "\r\n" 5 Height ""
从文件顶部开始的示例数据:
Record_ID Filename Path Width Height
1437 BreadCakeCooknPie.eps G:\BakedGoods\BreadCakeCooknPie.eps 595 647
1438 CakeChocolateRoses.eps G:\BakedGoods\CakeChocolateRoses.eps 1200 848
我使用以下 T-SQL 代码导入它:
bulk insert item_table from 'Item_Table.txt' with
( FORMATFILE='Item_Table.fmt', FIRSTROW=2)
表字段是:
[Record_ID] [int] NULL,
[Filename] [nvarchar](249) NULL,
[Path] [nvarchar](249) NOT NULL,
[Width] [int] NULL,
[Height] [int] NULL
有没有可用的文案?知道如何解决错误吗?知道如何获取 SSIS 创建的格式文件吗?还有其他想法吗?
非常感谢您考虑我的问题。