在SQL Server 2008中导入大分隔的.txt文件

时间:2018-02-16 19:01:06

标签: sql sql-server sql-server-2008

每天早上我的一位客户发送一个.txt文件,其中包含' ; '作为分隔符,这是当前使用SSIS在临时表中导入文件的方式:

mario.mascarenhas;MARIO LUIZ MASCARENHAS;2017-03-21 13:18:22;PDV;94d33a66dbaaff15a01d8139c7acd7c6;;;1;0;0;0;0;0;0;0;0;0;0;\N
evilanio.asevedo;EVILANIO ASEVEDO;2017-03-21 13:26:10;PDV;30a1bd072ac5f158f99445bb0975e423;;;1;1;0;0;0;0;0;0;0;0;0;\N
marcelo.tarso;MARCELO TARSO;2017-03-21 13:47:09;PDV;ef6b5e971242ec345552cdb724968f8a;;;1;0;0;0;0;0;0;0;0;0;0;\N
tiago.rodrigues;TIAGO ALVES RODRIGUES;2017-03-21 13:49:04;PDV;d782d4b30c0d302fe815b2cb48de4d03;;;1;1;0;0;0;0;0;0;0;0;0;\N
roberto.freire;ROBERTO CUSTODIO;2017-03-21 13:54:53;PDV;78794a18187f068d612e6b6370a60781;;;1;0;0;0;1;0;0;0;0;0;0;\N
eduardo.lima;EDUARDO MORO LIMA;2017-03-21 13:55:24;PDV;83e1c2696faa83d54881b13c70a07924;;;1;0;0;0;0;0;0;0;0;0;0;\N

每个文件至少包含23,000行。 我已经创建了一个具有正确列数的表来接收这些数据。所以我想要的是"爆炸" (就像在PHP中一样)使用' ; '作为列分隔符并在名为dbo.showHistoricalLogging的表中循环插入。

我一直在Stack中搜索解决方案,但没有具体考虑这个数据量并循环插入。

有什么想法吗?我正在运行SQL Server 2008。

2 个答案:

答案 0 :(得分:0)

我的建议,

将文本文件转换为csv文件,然后从StackOverFlow中引用此post以使用Bulk包。我之前在亚利桑那大学学习数据库设计课程中的一项编程任务时使用过这个。任何澄清和/或问题,留在评论中,并将尽我所能。

答案 1 :(得分:0)

这样的事情应该有效

BULK INSERT [TableName] FROM 'C:\MyFile.txt' WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\\N');

如果您需要其他参数,请咨询Microsoft Bulk Insert documentation。另外,SSIS也让这个变得非常容易 - 你可以通过很多方式诚实地做到这一点。