关于导入的问题,请大家帮帮忙。。急

时间:2022-12-01 20:44:05
我想导入一个文件的数据。。例如
列名 test1 test2 test3 test4 test5 test6 test7 test8 test9
数据 abc   dsji  djfsi jfid  did   did   dif   didd   fjdi
数据 dfi   e43   jdif  dfdi  dif   dfd   difj  iji    iji

我只想导入里面的 test1 test3 test4 test7 test8 其他的不要导入。。我应该在导入的储存过程修改写什么呢?

bcp "IISLog..tablename" in "\pach.log" -a 2048 -c -t " " -r \n -S sevserName  -U Sa -P password

16 个解决方案

#1


为什么不用DTS?
DTS是在数据转换服务,它包中通常包含一个或多个DTS任务。每个任务定义在数据移动和数据转换过程中需要执行的一项工作。
它可以在自定任务,也可以用其它语言直接调用com组件。

#2


在存储过程中,先把所有数据导入临时表,然后从临时表提取test1 test3 test4 test7 test8列insert到最终的目的表。

#3


为什么不用DTS?
DTS是在数据转换服务,它包中通常包含一个或多个DTS任务。每个任务定义在数据移动和数据转换过程中需要执行的一项工作。
它可以在自定任务,也可以用其它语言直接调用com组件。
-----------

确实,使用DTS的话,会简单很多。也有你需要的功能

#4


我是为了节省导入的时间才剪掉几个字段。。

DTS怎样使用。。。。谢谢
请贴出代码。。

#5


1. 最建议的方法, 用dts
2. 可以考虑 bcp + 格式化文件
3. 可以考虑导入到临时文件, 然后再处理.
4. 可以考虑用openrowset以表的形式打开文本文件, 这样可以通过指定列名来只导入指定的列
select * from 
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Text;HDR=NO;DATABASE=C:\' --c:\是目录
,aa#txt) --aa#txt是文本文件名aa.txt

#6


用dts包的话, 不是通过代码出来的, 而是在企业管理器的"数据转换服务"中新建包.

当然, 你可以在企业管理器中, 右键接受导入数据的表, 然后选择"所有任务"--导入数据
这样会启用sql的数据导入/导出向导.

根据向导提示, 在数据源中, 指定provider为文本文件, 或者指定你的文本文件名, 然后在数据转换的步骤中, 单击"..."按钮进入详细设置的列转换设置中, 设置要导入那些列, 不导入的列设置为"忽略"

最后完成就可以实现导入了.

#7


1、和你的文件在同一目录建立Schema.ini文件内容:
[你的数据文件名.txt]
CharacterSet=ANSI  
Format=TABDelimited  
ColNameHeader=TRUE  
MaxScanRows=20

2、
SELECT * FROM  
 OPENROWSET('MICROSOFT.JET.OLEDB.4.0',  
 'Text;Database=C:\;',   
 'SELECT * FROM [你的数据文件名#txt]')

#8


我是来看钻石的。好多呀

#9


邹老大的建议很好
让我想,只会临时表和DTS包

#10


zjcxc(邹建) 
我不可以用企业管理器来完成
只能用代码实现。。。现在因为导入的数据太大,要把一些没用的字段减到。。如果导入到临时表的话,速度太慢了。。。所以一定不可以全部导入。。。

#11


dts包怎么建,怎么用啊!

#12


开始--程序--mssqlserver--导入导出工具

就是它了,然后选择数据源,目标数据源,OK!

#13


晕。。。一定要用代码实现。。手动的话用不了啊。。。。

#14


你可以在企业管理器中建立, 建立后, 另存为, 选择存储为"Visual Basic"文件, 这就是程序代码.

直接用程序建我不会

#15


先谢了。。。。。。。

#16


学习学习……

#1


为什么不用DTS?
DTS是在数据转换服务,它包中通常包含一个或多个DTS任务。每个任务定义在数据移动和数据转换过程中需要执行的一项工作。
它可以在自定任务,也可以用其它语言直接调用com组件。

#2


在存储过程中,先把所有数据导入临时表,然后从临时表提取test1 test3 test4 test7 test8列insert到最终的目的表。

#3


为什么不用DTS?
DTS是在数据转换服务,它包中通常包含一个或多个DTS任务。每个任务定义在数据移动和数据转换过程中需要执行的一项工作。
它可以在自定任务,也可以用其它语言直接调用com组件。
-----------

确实,使用DTS的话,会简单很多。也有你需要的功能

#4


我是为了节省导入的时间才剪掉几个字段。。

DTS怎样使用。。。。谢谢
请贴出代码。。

#5


1. 最建议的方法, 用dts
2. 可以考虑 bcp + 格式化文件
3. 可以考虑导入到临时文件, 然后再处理.
4. 可以考虑用openrowset以表的形式打开文本文件, 这样可以通过指定列名来只导入指定的列
select * from 
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Text;HDR=NO;DATABASE=C:\' --c:\是目录
,aa#txt) --aa#txt是文本文件名aa.txt

#6


用dts包的话, 不是通过代码出来的, 而是在企业管理器的"数据转换服务"中新建包.

当然, 你可以在企业管理器中, 右键接受导入数据的表, 然后选择"所有任务"--导入数据
这样会启用sql的数据导入/导出向导.

根据向导提示, 在数据源中, 指定provider为文本文件, 或者指定你的文本文件名, 然后在数据转换的步骤中, 单击"..."按钮进入详细设置的列转换设置中, 设置要导入那些列, 不导入的列设置为"忽略"

最后完成就可以实现导入了.

#7


1、和你的文件在同一目录建立Schema.ini文件内容:
[你的数据文件名.txt]
CharacterSet=ANSI  
Format=TABDelimited  
ColNameHeader=TRUE  
MaxScanRows=20

2、
SELECT * FROM  
 OPENROWSET('MICROSOFT.JET.OLEDB.4.0',  
 'Text;Database=C:\;',   
 'SELECT * FROM [你的数据文件名#txt]')

#8


我是来看钻石的。好多呀

#9


邹老大的建议很好
让我想,只会临时表和DTS包

#10


zjcxc(邹建) 
我不可以用企业管理器来完成
只能用代码实现。。。现在因为导入的数据太大,要把一些没用的字段减到。。如果导入到临时表的话,速度太慢了。。。所以一定不可以全部导入。。。

#11


dts包怎么建,怎么用啊!

#12


开始--程序--mssqlserver--导入导出工具

就是它了,然后选择数据源,目标数据源,OK!

#13


晕。。。一定要用代码实现。。手动的话用不了啊。。。。

#14


你可以在企业管理器中建立, 建立后, 另存为, 选择存储为"Visual Basic"文件, 这就是程序代码.

直接用程序建我不会

#15


先谢了。。。。。。。

#16


学习学习……