阅读txt文件,并保存到表中的SQL Server

阅读txt文件,并保存到表中的SQL Server

问题描述:

我有一个txt文件,我的txt文件有27000000,我想读此文件并保存在SQL Server表
我用这个SQL服务器T-SQL
阅读txt文件,并保存到表中的SQL Server

BULK 
INSERT Employee 
FROM 'E:\\file.txt' --location with filename 
WITH 
(
FIELDTERMINATOR = ' ', 
ROWTERMINATOR = '\n' 
) 

,我的文件是:

66200 6827   435200 1393/05/23 14:26:26  18  1 
66200 6819   435200 1393/05/23 14:28:45 113  1 


但我的文件结构是:

66200<space>6827<space space>435200<space>1393/05/23<space space>14:26:26<space space space>18  
66200<space>6819<space space>435200<space>1393/05/23<space space>14:28:45<space space space>113  <br> 
在散装块我写这个字段终止


FIELDTERMINATOR = ' ', 


和我的文件埃夫里的时间有两个空格字符,每一次具有第三character.and散装不行
但我想读这个文件。
我该怎么做?

+0

你为什么不更换空单双层空间的所有occurence?有任何限制吗? – knkarthick24 2014-11-01 12:25:32

+0

我如何取代27000000条记录? – 2014-11-01 12:25:59

+1

查找并替换你试过并失败了吗? – knkarthick24 2014-11-01 12:27:30

创建一个格式文件是这样的....

10.0 
6 
1  SQLINT  0  4  " "  1  Col1   "" 
2  SQLCHAR  0  100  " "  2  Col2   SQL_Latin1_General_CP1_CI_AS 
3  SQLCHAR  0  100  " "  3  Col3   SQL_Latin1_General_CP1_CI_AS 
4  SQLCHAR  0  100  " "  4  Col4   SQL_Latin1_General_CP1_CI_AS 
5  SQLCHAR  0  100  " " 5  Col5   SQL_Latin1_General_CP1_CI_AS 
6  SQLCHAR  0  100  "\r\n" 6  Col6   SQL_Latin1_General_CP1_CI_AS 

将文件另存为.fmt,更换Col1中,col2的,COL3 .....在你的表中的实际列名。

那么你会写你的Insert语句类似...

BULK INSERT Employee 
FROM 'E:\file.txt' --location with filename 
WITH 
    (
    FORMATFILE = 'E:\Format_file.fmt' --path to your format file. 
    ); 
+0

谢谢注意我的问题,但我有一个错误 – 2014-11-02 05:28:22

+0

Msg 4862,Level 16,State 1,Line 1 由于文件“d:\ format.fmt”不完整或无法读取,无法批量加载。操作系统错误代码(空)。 – 2014-11-02 05:30:17

+0

@behzadrazzaqi我的猜测是,它失败了,因为你有七列,格式文件只指定六。为最终的“1”添加一个定义。 – 2014-11-02 11:57:47