现在需要使用向表中insert数据
大约100w条
我自己写程序一条一条的往里插,时间特别长特别长
而在Sql直接导文本则效率高很多
但直接导文本还需要将很多的数据进行分析,去掉一些冒号之类的
想问的是:
insert 100w条数据怎样做效率是最高的
数据本来是存在文本里的
然后刚才随便查阅了一下,很多人说用bcp,能否解释一下bcp...
thx~
大约100w条
我自己写程序一条一条的往里插,时间特别长特别长
而在Sql直接导文本则效率高很多
但直接导文本还需要将很多的数据进行分析,去掉一些冒号之类的
想问的是:
insert 100w条数据怎样做效率是最高的
数据本来是存在文本里的
然后刚才随便查阅了一下,很多人说用bcp,能否解释一下bcp...
thx~
如果要对数据做出判断后才导入,就得自己写代码了.
如果不用导入导出工具用什么方法效率会最高
即使我在程序中写代表,也是要写专门对sql的操作的
说详细点
我刚刚找到的
BULK INSERT 表名 FROM 'c:\test.txt'
WITH
(
FIELDTERMINATOR = '',
ROWTERMINATOR = '\n'
)
endEXEC master..xp_cmdshell 'bcp mydatabase..mrc in d:\mrc.txt -c -S 127.0.0.1 -U sa -P sa'然后把这一句改成自己需要的
我是这样理解的
FIELDTERMINATOR='' //这个应该是用来分隔的字符
ROWTERMINATOR='' //这个应该是分隔两行数据的字符然后EXEC master..xp_cmdshell 'bcp mydatabase..mrc in d:\mrc.txt -c -S 127.0.0.1 -U sa -P sa'
根据自己的需要填入就行了
我的理解是否正确?
现在是...
我放在查询分析器里运行,报end附近有错误
EXEC master..xp_cmdshell 'bcp datebase..table out "c:\1.txt" -c -t"," -r "\r\n" -U"sa" -P"sa"'
导出成功
但导入时
EXEC master..xp_cmdshell 'bcp datebase..table in "c:\1.txt" -c -t"," -r "\r\n" -U"sa" -P"sa"'
却报错
报错为:NULL
开始复制...
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC SQL Server Driver]在 BCP 数据文件中遇到的意外的 EOF
NULL
已复制了 0 行。
数据包的大小(字节): 4096
时钟时间(毫秒): 共 1
NULL请问究竟是为什么呢....thxthxthx...你们都是偶得神啊
而且就算我任意的在文本里输入
1,1,1,1,1,1,1,
都会报错
而且表里的字段都是允许为空的
有一个时间字段,但就算我把那里改成标准格式还是报相同的错...
谢谢大家~
select col1=isnull(col1,''),....--指定列
from OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};
DefaultDir=E:\;','select * from roy.txt')a
如果txt没列名时,可自定义:
"col1" "col2"--在txt第一行