我也来发帖问问,CSV文件导入SQLServer2008后是乱码

猴头 2013-10-25 02:32:20
什么CSV文件?就是那个2000W的CSV,不知道从什么数据库中导出的,

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

我用BULK Insert 命令导入的.
...全文
1809 38 打赏 收藏 转发到动态 举报
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
super_tiger_ 2013-10-28
  • 打赏
  • 举报
回复
引用 36 楼 yupeigu 的回复:
我反复测试了,发现你的数据有问题,一个是字符集有问题,一个是某些字段的值里面包含了逗号
其实CSV的文件确实是哪个样子,而且是UTF-8的页编码65001,导入必须要转编码到936(SQL 默认编码是Unicode).openrowset基本上我没用过,具体怎么转码得去查查。
houyajin 2013-10-28
  • 打赏
  • 举报
回复
http://pan.baidu.com/s/13knJO 这个直接mdf ,ldf 的文件
koujiaodashu 2013-10-26
  • 打赏
  • 举报
回复
如果是要看2000W,我用的是SQL2012。 点击shifenzheng中的dbo.cdsgus右键,选择前1000行。然后在右边弹出的窗口蓝色字母SELECT TOP1000把1000改为20000000。 然后右键执行,下方的各种名字,表格都会显出来
good luck!
LongRui888 2013-10-26
  • 打赏
  • 举报
回复
我反复测试了,发现你的数据有问题,一个是字符集有问题,一个是某些字段的值里面包含了逗号
猴头 2013-10-25
  • 打赏
  • 举报
回复
引用 32 楼 yupeigu 的回复:
你有qq不 光这么说好像 不知道问题再哪儿
好像错位了
猴头 2013-10-25
  • 打赏
  • 举报
回复
引用 32 楼 yupeigu 的回复:
你有qq不 光这么说好像 不知道问题再哪儿
79853112
LongRui888 2013-10-25
  • 打赏
  • 举报
回复
你有qq不 光这么说好像 不知道问题再哪儿
猴头 2013-10-25
  • 打赏
  • 举报
回复
引用 29 楼 yupeigu 的回复:
会不会是格式文件中的换行符的问题
带汉字的是乱码,数字的不是乱码
猴头 2013-10-25
  • 打赏
  • 举报
回复
引用 27 楼 yupeigu 的回复:
你把这个格式文件贴出来看看

10.0
33
1       SQLCHAR             0       0       ","      1     Name                   Chinese_PRC_CI_AS
2       SQLCHAR             0       0       ","      2     CardNo                 Chinese_PRC_CI_AS
3       SQLCHAR             0       0       ","      3     Descriot               Chinese_PRC_CI_AS
4       SQLCHAR             0       0       ","      4     CtfTp                  Chinese_PRC_CI_AS
5       SQLCHAR             0       0       ","      5     CtfId                  Chinese_PRC_CI_AS
6       SQLCHAR             0       0       ","      6     Gender                 Chinese_PRC_CI_AS
7       SQLCHAR             0       0       ","      7     Birthday               Chinese_PRC_CI_AS
8       SQLCHAR             0       0       ","      8     Address                Chinese_PRC_CI_AS
9       SQLCHAR             0       0       ","      9     Zip                    Chinese_PRC_CI_AS
10      SQLCHAR             0       0       ","      10    Dirty                  Chinese_PRC_CI_AS
11      SQLCHAR             0       0       ","      11    District1              Chinese_PRC_CI_AS
12      SQLCHAR             0       0       ","      12    District2              Chinese_PRC_CI_AS
13      SQLCHAR             0       0       ","      13    District3              Chinese_PRC_CI_AS
14      SQLCHAR             0       0       ","      14    District4              Chinese_PRC_CI_AS
15      SQLCHAR             0       0       ","      15    District5              Chinese_PRC_CI_AS
16      SQLCHAR             0       0       ","      16    District6              Chinese_PRC_CI_AS
17      SQLCHAR             0       0       ","      17    FirstNm                Chinese_PRC_CI_AS
18      SQLCHAR             0       0       ","      18    LastNm                 Chinese_PRC_CI_AS
19      SQLCHAR             0       0       ","      19    Duty                   Chinese_PRC_CI_AS
20      SQLCHAR             0       0       ","      20    Mobile                 Chinese_PRC_CI_AS
21      SQLCHAR             0       0       ","      21    Tel                    Chinese_PRC_CI_AS
22      SQLCHAR             0       0       ","      22    Fax                    Chinese_PRC_CI_AS
23      SQLCHAR             0       0       ","      23    EMail                  Chinese_PRC_CI_AS
24      SQLCHAR             0       0       ","      24    Nation                 Chinese_PRC_CI_AS
25      SQLCHAR             0       0       ","      25    Taste                  Chinese_PRC_CI_AS
26      SQLCHAR             0       0       ","      26    Education              Chinese_PRC_CI_AS
27      SQLCHAR             0       0       ","      27    Company                Chinese_PRC_CI_AS
28      SQLCHAR             0       0       ","      28    CTel                   Chinese_PRC_CI_AS
29      SQLCHAR             0       0       ","      29    CAddress               Chinese_PRC_CI_AS
30      SQLCHAR             0       0       ","      30    CZip                   Chinese_PRC_CI_AS
31      SQLCHAR             0       0       ","      31    Family                 Chinese_PRC_CI_AS
32      SQLCHAR             0       0       ","      32    Version                Chinese_PRC_CI_AS
33      SQLCHAR             0       0       "\r\n"   33    id                     Chinese_PRC_CI_AS

LongRui888 2013-10-25
  • 打赏
  • 举报
回复
会不会是格式文件中的换行符的问题
LongRui888 2013-10-25
  • 打赏
  • 举报
回复
引用 26 楼 yan_hyz 的回复:
[quote=引用 24 楼 yupeigu 的回复:] 注意里面的firstrow 如果你的csv文件里第一行是列标题,不是数据,那么为2,否则为1
select *  
from   
openrowset(bulk '你的文件路径.csv',             --要读取的文件路径和名称    
                formatfile='E:\2000W开房csv格式\网络数据.fmt',  --格式化文件的路径和名称   
                   
                firstrow = 2,            --要载入的第一行,由于第一行是标题,所以从2开始   
                --lastrow  = 1000,       --要载入的最后一行,此值必须大于firstrow   
                   
                maxerrors = 10,          --在加载失败之前加载操作中最大的错误数   
                --errorfile ='c:\wc_error1.txt', --存放错误的文件   
                   
                rows_per_batch = 10000                    --每个批处理导入的行数   
          ) as t   
字段格式为nvarchar(MAX) 还是乱码[/quote] 你有qq吗,我帮你看看
LongRui888 2013-10-25
  • 打赏
  • 举报
回复
你把这个格式文件贴出来看看
猴头 2013-10-25
  • 打赏
  • 举报
回复
引用 24 楼 yupeigu 的回复:
注意里面的firstrow 如果你的csv文件里第一行是列标题,不是数据,那么为2,否则为1
select *  
from   
openrowset(bulk '你的文件路径.csv',             --要读取的文件路径和名称    
                formatfile='E:\2000W开房csv格式\网络数据.fmt',  --格式化文件的路径和名称   
                   
                firstrow = 2,            --要载入的第一行,由于第一行是标题,所以从2开始   
                --lastrow  = 1000,       --要载入的最后一行,此值必须大于firstrow   
                   
                maxerrors = 10,          --在加载失败之前加载操作中最大的错误数   
                --errorfile ='c:\wc_error1.txt', --存放错误的文件   
                   
                rows_per_batch = 10000                    --每个批处理导入的行数   
          ) as t   
字段格式为nvarchar(MAX) 还是乱码
猴头 2013-10-25
  • 打赏
  • 举报
回复
引用 22 楼 yupeigu 的回复:
这个命令运行成功了吗? 运行完后返回是 NULL 吗? 下面的密码应该改为 -P000000 吧 exec xp_cmdshell 'bcp 网络数据.dbo.KaiFanG_RJ format nul -t "," -f E:\2000W开房csv格式\网络数据.fmt -c -Usa -000000 -S local' go
还是乱码....
LongRui888 2013-10-25
  • 打赏
  • 举报
回复
注意里面的firstrow 如果你的csv文件里第一行是列标题,不是数据,那么为2,否则为1
select *  
from   
openrowset(bulk '你的文件路径.csv',             --要读取的文件路径和名称    
                formatfile='E:\2000W开房csv格式\网络数据.fmt',  --格式化文件的路径和名称   
                   
                firstrow = 2,            --要载入的第一行,由于第一行是标题,所以从2开始   
                --lastrow  = 1000,       --要载入的最后一行,此值必须大于firstrow   
                   
                maxerrors = 10,          --在加载失败之前加载操作中最大的错误数   
                --errorfile ='c:\wc_error1.txt', --存放错误的文件   
                   
                rows_per_batch = 10000                    --每个批处理导入的行数   
          ) as t   
猴头 2013-10-25
  • 打赏
  • 举报
回复
引用 22 楼 yupeigu 的回复:
这个命令运行成功了吗? 运行完后返回是 NULL 吗? 下面的密码应该改为 -P000000 吧 exec xp_cmdshell 'bcp 网络数据.dbo.KaiFanG_RJ format nul -t "," -f E:\2000W开房csv格式\网络数据.fmt -c -Usa -000000 -S local' go
密码改为P000000可以了,找到文件了,然后在执行Insert?
LongRui888 2013-10-25
  • 打赏
  • 举报
回复
这个命令运行成功了吗? 运行完后返回是 NULL 吗? 下面的密码应该改为 -P000000 吧 exec xp_cmdshell 'bcp 网络数据.dbo.KaiFanG_RJ format nul -t "," -f E:\2000W开房csv格式\网络数据.fmt -c -Usa -000000 -S local' go
猴头 2013-10-25
  • 打赏
  • 举报
回复
引用 20 楼 yupeigu 的回复:
能看到 E:\2000W开房csv格式\网络数据.fmt 这个文件嘛
就是很奇怪,没有这个文件...
LongRui888 2013-10-25
  • 打赏
  • 举报
回复
能看到 E:\2000W开房csv格式\网络数据.fmt 这个文件嘛
猴头 2013-10-25
  • 打赏
  • 举报
回复
引用 18 楼 yupeigu 的回复:
通过bcp来生成的: 比如数据库名是wc,表名是xxdd,用户名sa密码yupeigu 服务器ip和端口 exec xp_cmdshell 'bcp wc.dbo.xxdd format nul -t "," -f c:\wc.fmt -c -Usa -Pyupeigu -S 192.168.1.106,1433' go

--修改高级参数  
sp_configure 'show advanced options',1  
go  
   
--允许即席分布式查询  
sp_configure 'Ad Hoc Distributed Queries',1  
go  
   
--如果配置的值不在合理范围(在最小值最大值范围内),那么可以强制覆盖  
reconfigure with override    
go  
   
sp_configure 'xp_cmdshell',1  
go  
reconfigure  
go  

--导出格式文件,这个是关键,数据库名称,表名称,用户名和密码,服务器ip和端口  
--都改成你自己的  
exec xp_cmdshell 'bcp 网络数据.dbo.KaiFanG_RJ format nul -t "," -f E:\2000W开房csv格式\网络数据.fmt -c -Usa -000000 -S local'  
go 
???没提示错误,然后呢?
加载更多回复(18)

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧