首页 新闻 会员 周边

50M 的 Excel 数据 导入SQL Server

0
悬赏园豆:10 [已关闭问题] 关闭于 2015-09-12 14:28

50M的Excel 约40万条数据,含 列名, 怎样导入到数据库中, 

导入后的表和excel 列名要一模一样,顺序无所谓。

目前的情况是 使用sql server 导入数据功能,直接导入该Excel 只导进去26万数据。。其他的丢失了。

将excel拆分成5万个的excel之后 在导入 没有问题,全部能导入。 

但拆分容易出错,所以想找个简单的方法。

写程序读,太慢了。一秒只能读十多行。

 

 

后缀名的主页 后缀名 | 初学一级 | 园豆:73
提问于:2015-06-12 15:39
< >
分享
所有回答(7)
0

你到底是要问丢失数据的问题呢?

还是要问简单的方法?

还是要问慢的事情?读的慢谁知道你咋写的,写的好与不好性能可以差1000倍。

爱编程的大叔 | 园豆:30839 (高人七级) | 2015-06-12 15:42

高手来了,哈哈  大叔真是大好人啊。。以前我就受到过您的指教。 

请问您有没有高效 ,不出错的解决办法啊?  

不能丢数据,也要简单,也要高效。。这个要求有点高。。

支持(0) 反对(0) 后缀名 | 园豆:73 (初学一级) | 2015-06-12 15:45

可能我的水平有点臭,写的程序慢,请问您有没高效的程序啊。?

支持(0) 反对(0) 后缀名 | 园豆:73 (初学一级) | 2015-06-12 15:46

@后缀名: 我不是说你水平的问题。我是说你问问题的方式。(没人知道你咋写的,怎么给你出主意)

1、26万行丢失,这个可以通过DEBUG或者LOG先查出是什么问题,这样你的水平才会长进。

2、你这50行不是每天都要导入的吧?要那么快干啥?你用啥方式导入的?

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2015-06-12 15:50

@爱编程的大叔:   

 1 ,我在sql server 导入导出向导里导入数据选择excel,导入整个50M的excel,这里只导进去26万条数据, 显示导入成功, 没有报错信息,但数据少了好多。

2, 这种操作每半个月导入一次, 要求是准确是第一位。。。

    谢谢!

支持(0) 反对(0) 后缀名 | 园豆:73 (初学一级) | 2015-06-12 16:04

@后缀名: 对啊,所以问题就是只要解决26万条数据的事了。

显示导入成功,这个是外行说的话啊,你要是里面把错误全给TRY CATCH了谁也没你办法啊。

这个就的拿到EXCEL文件,拿着代码调试才知道的。

 

你得学会调错啊,这除非就是别人帮你写个软件,否则你的代码你总得学会咋调试错误的。

错误调得多了,你自然知道怎样写不会出错,怎样写能知道错在自己身上还是别人身上。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2015-06-12 16:08

@爱编程的大叔: 用的是sql server management studio 自带的工具导的,不是我写的程序。。所有没办法try catch

支持(0) 反对(0) 后缀名 | 园豆:73 (初学一级) | 2015-06-12 16:10

@后缀名: 解决方案

1、能写,写一个。

2、不能写,有钱,找人写一个。

3、不能写,没钱,拆分EXCEL。

4、不能写,没钱,不想拆分EXCEL,那就让他错吧。

支持(2) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2015-06-12 16:14
0

 正好有一个Excel导入工具,开源:https://code.csdn.net/tuchangsheng801004/exporttoexcel

还是个未完成的版本,但sql server 的导入我有测试是可以导入的;

使用时要注意几点:

  1.sqlserver导入时导入的excel文件中的sheet名称与相应数据库中的表名对应;

  2.字段与数据库中的字段名称进行对应;

  3.如果能保存excel文件中的数据导入没有错误的话可以修下代码去掉对数据的检查

码农杰森 | 园豆:202 (菜鸟二级) | 2015-06-12 16:17

这也是一个方法,

不懂写,不想给钱,

把命交到别人手里...

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2015-06-12 16:19
1

 建议你还是自己写一个, 毕竟50M数据量不小了。用sql server management studio 不靠谱。 用别人的不放心。 自己写的话有问题还能及时的fix、

请叫我头头哥 | 园豆:9382 (大侠五级) | 2015-06-12 17:31
0

sqlbulkcopy试过没

清海扬波 | 园豆:825 (小虾三级) | 2015-06-13 21:25
0

楼主可以试试使用:SqlBulkCopy

嗷大喵学编程 | 园豆:165 (初学一级) | 2015-08-04 14:32
0

写代码用 sqlbulkcopy 批量导,四十万数据导入数据库表不用十秒吧。

包子wxl | 园豆:186 (初学一级) | 2015-08-18 10:13
0

自己用脚本: 
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秒。 

 

 

后缀名 | 园豆:73 (初学一级) | 2015-09-12 14:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册