BCP导入txt文本到SQL数据库: 如何跳过自增长表列?


BCP导入txt文本到SQL数据库,服务器有一个日志文件需要入库,格式如下:
1 0.0.0.0 0 0.0.0.0 2008-1-29 19:16:43.132 2008-1-29 19:18:15.123 192.168.1.6 00-E0-A0-05-B8-FA 1 2008-2-3 17:12:26.312


bcp的fmt文件也生成了:
9.0
11
1       SQLCHAR       0       12      "\t"     1     ID                             ""
2       SQLCHAR       0       12      "\t"     2     GameID                         ""
3       SQLCHAR       0       100     "\t"     3     GameEdition                    Chinese_PRC_CI_AS
4       SQLCHAR       0       12      "\t"     4     PlayerArea                     ""
5       SQLCHAR       0       100     "\t"     5     SDKEdition                     Chinese_PRC_CI_AS
6       SQLCHAR       0       100     "\t"     6     ConnStartDate                  Chinese_PRC_CI_AS
7       SQLCHAR       0       100     "\t"     7     ConnEndDate                    Chinese_PRC_CI_AS
8       SQLCHAR       0       100     "\t"     8     Ip                             Chinese_PRC_CI_AS
9       SQLCHAR       0       200     "\t"     9     MACAddress                     Chinese_PRC_CI_AS
10      SQLCHAR       0       20      "\t"     10    Chn                            Chinese_PRC_CI_AS
11      SQLCHAR       0       100     "\r\n"   11    AddDate      

第一个ID为自增长,只读。我想跳过这个表列。按照微软的说法我改了下fmt文件如下:

9.0
10
1       SQLCHAR       0       0       ""       0     ID                             ""
2       SQLCHAR       0       12      "\t"     2     GameID                         ""
3       SQLCHAR       0       100     "\t"     3     GameEdition                    Chinese_PRC_CI_AS
4       SQLCHAR       0       12      "\t"     4     PlayerArea                     ""
5       SQLCHAR       0       100     "\t"     5     SDKEdition                     Chinese_PRC_CI_AS
6       SQLCHAR       0       100     "\t"     6     ConnStartDate                  Chinese_PRC_CI_AS
7       SQLCHAR       0       100     "\t"     7     ConnEndDate                    Chinese_PRC_CI_AS
8       SQLCHAR       0       100     "\t"     8     Ip                             Chinese_PRC_CI_AS
9       SQLCHAR       0       200     "\t"     9     MACAddress                     Chinese_PRC_CI_AS
10      SQLCHAR       0       20      "\t"     10    Chn                            Chinese_PRC_CI_AS
11      SQLCHAR       0       100     "\r\n"   11    AddDate      

运行说主序列不对,奇怪。希望那个高手能解决下这个fmt问题。搜遍CSDN也没有看到答案。

27 个解决方案

#1


应该直接用BCP   -E就可以解决的
如果不行:
一、把数据库那个字段改成整型(非自增)   
二、导入前把ID去掉

#2


我是程序员,数据库表不是我建的。和他们商量他们不让删掉ID,他的ID要唯一改非自增的话保证唯一很麻烦。

#3


bcp "[Test].[dbo].[w_PlayerConnGameInfo_2008_2]" in "D:\PlayInfo.txt"   -f "D:\PlayInfo.fmt" -S "192.168.1.129" -U "Admin" -P "Admin" 

这个是导入的命令。-E参数是怎么解决的能具体说下吗?

#4


以下摘自MSDN:
-E
指定导入的数据文件中的标识值用于标识列。如果不指定 -E,则将忽略被导入的数据文件中此列的标识值,而且 SQL Server 2005 将根据创建表期间指定的种子值和增量值自动分配唯一值。 

假如数据文件不包含表或视图中的标识列的值,则可在格式文件指定,在导入数据时忽略表或视图中的标识列;SQL Server 2005 将自动为该列分配唯一值。有关详细信息,请参阅 DBCC CHECKIDENT (Transact-SQL)。

-E 选项有一个特殊的权限要求。有关详细信息,请参阅本主题后面的“备注”。

#5


bcp   "[Test].[dbo].[w_PlayerConnGameInfo_2008_2]"   in   "D:\PlayInfo.txt"       -f   "D:\PlayInfo.fmt"   -S   "192.168.1.129"   -U   "Admin"   -P   "Admin" -E
结果报:在BCP文件中遇到意外的EOF  
如果我把要入库的日志文件加上ID号:
1 1 0.0.0.0 0 0.0.0.0 2008-1-29 19:16:43.132 2008-1-29 19:18:15.123 192.168.1.6 00-E0-A0-05-B8-FA 1 2008-2-3 17:12:26.312
在导入时报错:
对以造型说明无效的字符值。
不知道你是怎么用的

#6


我另外一个没有自增长ID的表导入正常。这个问题很头大啊!

#7


删除文件尾部所有的空行
格式文件写得不好,也容易产生这个问题

#8


改为-E命令后还是出现对于造型说明无效的字符值,总共8行。
改-E 不用改格式文件的吗,那个少一列的啊

#9


我还是建议你这样:
一、把数据库那个字段改成整型(非自增)       
二、导入前把ID去掉

#10


实在是说不服他们改数据库,他们一定要有ID,我为这个头疼一个星期

#11


我看微软帮助是可以通过修改格式化文件而跳过表列的啊

#12


我把fmt文件改这样
9.0 
10 
1               SQLCHAR               0               0               ""               0           ID                                                           "" 
2               SQLCHAR               0               12             "\t"           2           GameID                                                   "" 
3               SQLCHAR               0               100           "\t"           3           GameEdition                                         Chinese_PRC_CI_AS 
4               SQLCHAR               0               12             "\t"           4           PlayerArea                                           "" 
5               SQLCHAR               0               100           "\t"           5           SDKEdition                                           Chinese_PRC_CI_AS 
6               SQLCHAR               0               100           "\t"           6           ConnStartDate                                     Chinese_PRC_CI_AS 
7               SQLCHAR               0               100           "\t"           7           ConnEndDate                                         Chinese_PRC_CI_AS 
8               SQLCHAR               0               100           "\t"           8           Ip                                                           Chinese_PRC_CI_AS 
9               SQLCHAR               0               200           "\t"           9           MACAddress                                           Chinese_PRC_CI_AS 
10             SQLCHAR               0               20             "\t"           10         Chn                                                         Chinese_PRC_CI_AS 
11             SQLCHAR               0               100           "\r\n"       11         AddDate         
在bcp       "[Test].[dbo].[w_PlayerConnGameInfo_2008_2]"       in       "D:\PlayInfo.txt"               -f       "D:\PlayInfo.fmt"       -S       "192.168.1.129"       -U       "Admin"       -P       "Admin"   -E 

报错:无效的描述符索引

#13


D:\PlayInfo.txt文件内容就是:
1 0.0.0.0 0 0.0.0.0 2008-1-29   19:16:43.132 2008-1-29   19:18:15.123 192.168.1.6 00-E0-A0-05-B8-FA 1 2008-2-3   17:12:26.312 

#14


难道大家都没有遇到这个问题。遇到这个就删掉ID?

#15


可以改成整形啊!不要设置自动增长列!

#16


那个日志文件只有10列,改ID的话有2个缺点:
1 日志文件需要增加到11列
2 ID的唯一性不好保证

#17


还没有人能解决啊

#18


难道这个版现在没有一个高手能解决?

#19


难道CSDN真没有高手?100分都没有人要

#20


UP

#21


UP

#22


版主大哥也看下啊,分可以加的啊

#23


UP

#24


这么多天了还没有人解决,加分到200.那个解决就结贴送分

#25


up

#26


我也遇到这个问题,网上查了下有个人说就按你说的那个方法就解决了,可是我怎么弄都不行。。。

#27


如果您解决了能回个消息给我么
智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告