50M的Excel 约40万条数据,含 列名, 怎样导入到数据库中,
导入后的表和excel 列名要一模一样,顺序无所谓。
目前的情况是 使用sql server 导入数据功能,直接导入该Excel 只导进去26万数据。。其他的丢失了。
将excel拆分成5万个的excel之后 在导入 没有问题,全部能导入。
但拆分容易出错,所以想找个简单的方法。
写程序读,太慢了。一秒只能读十多行。
你到底是要问丢失数据的问题呢?
还是要问简单的方法?
还是要问慢的事情?读的慢谁知道你咋写的,写的好与不好性能可以差1000倍。
高手来了,哈哈 大叔真是大好人啊。。以前我就受到过您的指教。
请问您有没有高效 ,不出错的解决办法啊?
不能丢数据,也要简单,也要高效。。这个要求有点高。。
可能我的水平有点臭,写的程序慢,请问您有没高效的程序啊。?
@后缀名: 我不是说你水平的问题。我是说你问问题的方式。(没人知道你咋写的,怎么给你出主意)
1、26万行丢失,这个可以通过DEBUG或者LOG先查出是什么问题,这样你的水平才会长进。
2、你这50行不是每天都要导入的吧?要那么快干啥?你用啥方式导入的?
@爱编程的大叔:
1 ,我在sql server 导入导出向导里导入数据选择excel,导入整个50M的excel,这里只导进去26万条数据, 显示导入成功, 没有报错信息,但数据少了好多。
2, 这种操作每半个月导入一次, 要求是准确是第一位。。。
谢谢!
@后缀名: 对啊,所以问题就是只要解决26万条数据的事了。
显示导入成功,这个是外行说的话啊,你要是里面把错误全给TRY CATCH了谁也没你办法啊。
这个就的拿到EXCEL文件,拿着代码调试才知道的。
你得学会调错啊,这除非就是别人帮你写个软件,否则你的代码你总得学会咋调试错误的。
错误调得多了,你自然知道怎样写不会出错,怎样写能知道错在自己身上还是别人身上。
@爱编程的大叔: 用的是sql server management studio 自带的工具导的,不是我写的程序。。所有没办法try catch
@后缀名: 解决方案
1、能写,写一个。
2、不能写,有钱,找人写一个。
3、不能写,没钱,拆分EXCEL。
4、不能写,没钱,不想拆分EXCEL,那就让他错吧。
正好有一个Excel导入工具,开源:https://code.csdn.net/tuchangsheng801004/exporttoexcel
还是个未完成的版本,但sql server 的导入我有测试是可以导入的;
使用时要注意几点:
1.sqlserver导入时导入的excel文件中的sheet名称与相应数据库中的表名对应;
2.字段与数据库中的字段名称进行对应;
3.如果能保存excel文件中的数据导入没有错误的话可以修下代码去掉对数据的检查
这也是一个方法,
不懂写,不想给钱,
把命交到别人手里...
建议你还是自己写一个, 毕竟50M数据量不小了。用sql server management studio 不靠谱。 用别人的不放心。 自己写的话有问题还能及时的fix、
sqlbulkcopy试过没
楼主可以试试使用:SqlBulkCopy
写代码用 sqlbulkcopy 批量导,四十万数据导入数据库表不用十秒吧。
自己用脚本:
BULK INSERT [表名]
FROM '文件绝对路径'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ',', --CSV field delimiter
ROWTERMINATOR = '\n', --Use to shift the control to next row
TABLOCK
)
此方法要求:
表已存在,且列数与文件里的列数相同,顺序一致,
文件是csv文件,
文件编码是ANSI 格式
40万条数据 20秒。