[test.txt] colnameheader=true format=Delimited(@) col1 = "tb1" text col2 = "tb2" text col3 = "tb3" text col4 = "tb4" text col5 = "tb5" text col6 = "tb6" text 然后调用 SET @strSQL = ' INSERT INTO temptable SELECT * FROM OPENROWSET(''MSDASQL'',''Driver={Microsoft Text Driver (*.txt; *.csv)};DEFAULTDIR='+@Filepath+';Extensions=CSV;'', ''SELECT * FROM [test.txt]'')'Exec (@strSQL) Filepath是文件路径,如果服务器配置够好的话,应该用这个方法不成问题,你试试!
没看太明白
如果用循环,每读一条数据,然后往数据库里插一条,那肯定不行的。因为读取txt文件要花费时间,连接数据库并操作也需要花费时间。
如果一次性全部读取放在内存,又很耗费资源,可能会导致死机。不可取。解决方案:1、建立数据库连接,不断开
2、新建一个事务(一定要记得是用事务)
3、一次性取得若干数据(最好是32bite的倍数),然后,插入数据。
4、循环操作3步骤直到所有数据插入完成。
5、结束事务(如果中途出错则回滚事务)
6、断开数据库连接(非常重要,不然会占用资源导致出现问题。)
没看太明白
---------------------------------------------------------
既然知道就应该和大家说说
colnameheader=true
format=Delimited(@)
col1 = "tb1" text
col2 = "tb2" text
col3 = "tb3" text
col4 = "tb4" text
col5 = "tb5" text
col6 = "tb6" text 然后调用
SET @strSQL =
'
INSERT INTO temptable
SELECT * FROM
OPENROWSET(''MSDASQL'',''Driver={Microsoft Text Driver (*.txt; *.csv)};DEFAULTDIR='+@Filepath+';Extensions=CSV;'',
''SELECT * FROM [test.txt]'')'Exec (@strSQL)
Filepath是文件路径,如果服务器配置够好的话,应该用这个方法不成问题,你试试!