bulk insert的问题

qiudong_5210 2011-12-27 01:59:53
我有一堆数据存在txt文件中,想批量导入到数据库中,
表结构为:
Id int 自增列
Name varchar(50)
Grade int
CreateDate datetime

txt文件中只有Name,Grade,CreateDate的数据
怎么让txt文件不改变,而让数据库中原有数据列Id自增啊
...全文
124 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cuishujie0810 2013-05-18
  • 打赏
  • 举报
回复
楼主把具体语句完整的写出来哇
qiudong_5210 2011-12-27
  • 打赏
  • 举报
回复
解决了,谢谢各位,我原来的bulk insert语句中加了 keepidentity,去掉之后便可以了。
_0筱筱0_ 2011-12-27
  • 打赏
  • 举报
回复
为什么直接无视我的方法,BULK INSERT对格式要求很高直接往目标表插很容易报错,先弄到临时表里再用SQL处理比较简单的。
--小F-- 2011-12-27
  • 打赏
  • 举报
回复
那用2楼小小的方法
勿勿 2011-12-27
  • 打赏
  • 举报
回复
/** 导入文本文件 */
EXEC master..xp_cmdshell 'bcp dbname..tablename in c:\DT.txt -c -Sservername -Usa -Ppassword'
qiudong_5210 2011-12-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sql77 的回复:]
引用 4 楼 qiudong_5210 的回复:
不导入自增列会报错,提示不能为null

你是不是设置了自增的?
[/Quote]

对我需要有一列标识列,而这个标识列和导入的数据没有直接关系
SQL77 2011-12-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qiudong_5210 的回复:]
不导入自增列会报错,提示不能为null
[/Quote]
你是不是设置了自增的?
SQL77 2011-12-27
  • 打赏
  • 举报
回复
HDR=YES 的时候,第一行被认为是字段名
HDR=NO 的时候,第一行被认为是数据

select * from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Text;HDR=NO;DATABASE=C:\' --c:\是目录
,Surveys#txt)--aa#txt是文本文件名aa.txt

要不然直接用查询
qiudong_5210 2011-12-27
  • 打赏
  • 举报
回复
不导入自增列会报错,提示不能为null
SQL77 2011-12-27
  • 打赏
  • 举报
回复
你导入进去不就自增的了么
_0筱筱0_ 2011-12-27
  • 打赏
  • 举报
回复
先建个没ID的表,用BULK INSERT插进去,再从这个表转到那个表。。。。这是最容易想的办法
--小F-- 2011-12-27
  • 打赏
  • 举报
回复
导入的时候不导自增列不就可以了。

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧