bulk insert 语句

joy_jiangyan 2008-09-22 06:22:11
用dts直接导 选择 行分隔符 CL LR,列分隔符 ':'
没有问题。
但用bulk insert 语句
BULK INSERT xx.dbo.[Tmp] FROM 'd:\aa.txt'
WITH ( FIELDTERMINATOR = ':',ROWTERMINATOR = '\n' )

所有的内容都insert到一行里去了。 应该是ROWTERMINATOR 这个参数有点问题。但在文本里的确是回车来换行的。
文件是txt的,大概内容如下:
08-09-22 07:00:00:這裡發現愛 -> (虎痴) 我回去了
08-09-22 07:00:00:$[发] 古皮古袍
08-09-22 07:00:00:$[伊丽女神] 子
08-09-22 07:00:00:贝姬4: \\f=f2便
08-09-22 07:00:00:贝姬2: \\f=f2批发/瑟鲁
08-09-22 07:00:00:贝姬7: \\f=f26尤米
08-09-22 07:00:00:贝9: \\f=f2
08-09-22 07:00:00:自动器: \\f=f3收项
08-09-22 07:00:00:理想VS现实 -> (天外飞仙) 语辅助
试着换了\r,\t,等分隔符都不行。
会有error

服务器: 消息 4832,级别 16,状态 1,行 1
大容量插入: 在数据文件中遇到意外的文件结尾 (EOF)。
服务器: 消息 7399,级别 16,状态 1,行 1
OLE DB 提供程序 'STREAM' 报错。提供程序未给出有关错误的任何信息。
OLE DB 错误跟踪[OLE/DB Provider 'STREAM' IRowset::GetNextRows returned 0x80004005: 提供程序未给出有关错误的任何信息。]。
语句已终止。

哪位大虾对bulkinsert比较熟悉?
...全文
217 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
joy_jiangyan 2008-09-23
  • 打赏
  • 举报
回复
用bulkinsert语句,文本文件里面的数据的列数一定要一样吗?
不知道晴天怎么做出来的。用:做了字段分隔符后,你的c字段里面还有:的内容。

因为文本文件里面的列数不一样,我把文件改了一下,全部换成了4列,insert成功。

但程序在产生txt文件的时候,每一行的列数就是不一样的。

bulkinsert没有办法可以导入列数不一样的文件吗
joy_jiangyan 2008-09-23
  • 打赏
  • 举报
回复
bulkinsert 只有在源文件的所有行的列数目都一样,而且要和目标表的列的数目一样才会成功。

由于生成的源文件做不到每行的列数目一样,也没有其他的分隔符可以做到,所以就直接insert为一列了。
然后再sql直接写语句来分割。
fcuandy 2008-09-22
  • 打赏
  • 举报
回复
2楼的是对的,而楼主的为什么不对。 可能把文本粘到csdn后,对换行的符号进行替换。

楼主可以把插入后的记录任取一行的值出来, 循环打出ascii码看看,就知道你本地的aa.txt是哪个换的行了。然后以那个为换行符
TopFans 2008-09-22
  • 打赏
  • 举报
回复
楼上的正解!
接分~~~~
-晴天 2008-09-22
  • 打赏
  • 举报
回复
create table TMP(dateandh varchar(15),m varchar(2),s varchar(2),c nvarchar(30))
go
BULK INSERT test.dbo.[Tmp] FROM 'd:\aa.txt'
WITH ( FIELDTERMINATOR = ':',ROWTERMINATOR = '\n' )
select * from tmp
go
drop table tmp
/*dateandh m s c
--------------- ---- ---- ------------------------------
08-09-22 07 00 00 這裡發現愛 -> (虎痴) 我回去了
08-09-22 07 00 00 $[发] 古皮古袍
08-09-22 07 00 00 $[伊丽女神] 子
08-09-22 07 00 00 贝姬4: \\f=f2便
08-09-22 07 00 00 贝姬2: \\f=f2批发/瑟鲁
08-09-22 07 00 00 贝姬7: \\f=f26尤米
08-09-22 07 00 00 贝9: \\f=f2
08-09-22 07 00 00 自动器: \\f=f3收项
08-09-22 07 00 00 理想VS现实 -> (天外飞仙) 语辅助

(9 行受影响)
*/

你有没有考虑时间中的":"?
chenjunsheep 2008-09-22
  • 打赏
  • 举报
回复
我就是来帮顶的

22,209

社区成员

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

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