手写代码导入文本文件到SQLServer2000表的问题
先谢谢解答我问题的各位高手了。
要把文本文件E:\abc.txt导入SQLServer2000的表dbo.tmp_src里,使用的是
bulk insert dbo.tmp_src
from 'E:\abc.txt'
with
(
fieldterminator = '|',
rowterminator = '|
'
)
其中tmp_src已经提前建好,只要把abc.txt追加到tmp_src里就可以了。有几个问题请各位高手帮忙解决一下,多谢了。
1. 'rowterminatord ='处:行分隔符是'|'加上换行符,我看在DTS设计器里,换行符是用{LF}表示的,但在此处应该怎么写呢?我现在是在
abc.txt文件里直接把换行符拷贝过来,但总觉得这样做很不保险,因为在上面的代码中不能显式的显示换行符。如果要显式的写出来,应该怎
么写?
2. abc.txt里有些字段存的是日期,格式是20080122这种形式,但如果我在表dbo.tmp_src里相应的字段设置成datetime型的话,使用上面语句
导入就会出错,错误类型是“类型不匹配”,目前的解决办法是先把表dbo.tmp_src相应的字段设置成varchar(8)类型,导入以后,再在
SQLServer里进行处理。有没有办法在导入的过程中把20080122这种格式的日期直接导到SQLServer的datetime类型字段的方法?
3. 想把abc.txt里的一个字段导成数值类型,比如int型或者float型,但是在abc.txt里,这个字段的有些值不是数值,而是'+'、'-'等字符值
。这样,用上面的代码导入时,会出现“类型不匹配”的错误,有没有办法在导入的时候,把这个字段直接导成数值型,当遇到不是数值型的
值时,把它置为空置或者0?
请高手们帮忙解答一下啊,非常感谢!
------解决方案--------------------1.换行可以这样啊
ROWTERMINATOR =' |\n'
------解决方案--------------------目前的解决办法是先把表dbo.tmp_src相应的字段设置成varchar(8)类型,导入以后,再在SQLServer里进行处理。
或者,你自己把sql server的默认日志改为你现在的格式.
------解决方案--------------------关于问题2:
SQL code
alter table dbo.tmp_src alter column 日期字段 varchar(8)
bulk insert ....
...
...
alter table dbo.tmp_src alter column 日期字段 datetime
------解决方案--------------------
SQL code
bulk insert dbo.tmp_src
from 'E:\abc.txt'
with
(
datafiletype='char',
fieldterminator = ' ¦',
rowterminator = ' ¦\t '
)