日期:2014-05-17  浏览次数:20601 次

我也来发帖问问,CSV文件导入SQLServer2008后是乱码
什么CSV文件?就是那个2000W的CSV,不知道从什么数据库中导出的,

我打开CSV文件看单元格的格式,发现都是[常规],那么在SQLServer2008中建一个对应的表,响应的列应该用什么格式呢???

我用BULK Insert 命令导入的.

------解决方案--------------------
引用:
什么CSV文件?就是那个2000W的CSV,不知道从什么数据库中导出的,

我打开CSV文件看单元格的格式,发现都是[常规],那么在SQLServer2008中建一个对应的表,响应的列应该用什么格式呢???

我用BULK Insert 命令导入的.

呵呵··BULK 我没用,我是用的SSIS ,数据库表是NVARCHAR类型字段的。
SSIS里面也是有Page Code的问题,CSV里面的东西是UTF-8的65001页码.而MSSQL的是936的。
所以我在SSIS里面用了个生成列控件,然后通过控件转成了Unicode的字码。
图就不上了全是身份证号码。哇咔咔...
------解决方案--------------------
CSV文件有自己个格式,类似的有XML。CSV文件可以用EXCEL打开。

要导出CSV文件的话,用SQL2008,右键数据库,任务,...可以直接导出。通常CSV文件中所有信息都会保存字符串列(最长好像是255)。

可以用SSIS导出成Excel文件,各个列的类型都能自己进行定义。
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

什么CSV文件?就是那个2000W的CSV,不知道从什么数据库中导出的,

我打开CSV文件看单元格的格式,发现都是[常规],那么在SQLServer2008中建一个对应的表,响应的列应该用什么格式呢???

我用BULK Insert 命令导入的.

呵呵··BULK 我没用,我是用的SSIS ,数据库表是NVARCHAR类型字段的。
SSIS里面也是有Page Code的问题,CSV里面的东西是UTF-8的65001页码.而MSSQL的是936的。
所以我在SSIS里面用了个生成列控件,然后通过控件转成了Unicode的字码。
图就不上了全是身份证号码。哇咔咔...


你怎么导入 的教教我,怎么用SSIS导入??


你安装SQL SERVER 2008 把 IntegrationServices 选上就行了,然后开个IntegrationServices的工程,里面有 数据流任务 控件,具体怎么做你可以参照(但是记得要加入 派生列 这个控件来转字符类型):http://blog.csdn.net/goumaohua/article/details/4975289
------解决方案--------------------
如果都是中文字符串成乱码了,应该是数据库编码不对。
------解决方案--------------------
引用:
Quote: 引用:

你用记事本打开这个csv文件试试看,里面应该不是乱码把


记事本 打不开 一个 300+M,我用别的文本编辑器 打开 不是乱码


对了 csv的格式,用excel打开试试看
------解决方案--------------------

1、如果你知道要导入数据有多少列,每一列是什么类型的话,首先在sql server中建表。

2、通过bcp命令,取得格式文件

3、如下语句就能在sql server中显示要导入的数据:
--先查看要导入的数据   
select *  
from   
openrowset(bulk 'c:\wc.csv',             --要读取的文件路径和名称    
                formatfile='c:\wc.fmt',  --格式化文件的路径和名称   
                  
                firstrow = 2,            --要载入的第一行,由于第一行是标题,所以从2开始   
                --lastrow  = 1000,       --要载入的最后一行,此值必须