我也来发帖问问,CSV文件导入SQLServer2008后是乱码
什么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文件,各个列的类型都能自己进行定义。
------解决方案--------------------
你安装SQL SERVER 2008 把 IntegrationServices 选上就行了,然后开个IntegrationServices的工程,里面有 数据流任务 控件,具体怎么做你可以参照(但是记得要加入 派生列 这个控件来转字符类型):http://blog.csdn.net/goumaohua/article/details/4975289
------解决方案--------------------如果都是中文字符串成乱码了,应该是数据库编码不对。
------解决方案--------------------
你用记事本打开这个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, --要载入的最后一行,此值必须