读取txt文件并保存到表sql server中

时间:2014-11-01 12:03:05

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

我有一个txt文件,我的txt文件有27000000,我想读取此文件并保存在sql server表中
我使用这个sql server T-SQL

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 = ' ',


而我的文件evry时间有两个空格字符,每次都有第三个字符。并且批量不工作
但我想读这个文件。
我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

创建类似这样的格式文件....

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. 
    );