首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sqlcmd将表查询保存到CSV,不能重新导入到同一个表定义中吗?

使用sqlcmd将表查询保存到CSV,不能重新导入到同一个表定义中吗?
EN

Stack Overflow用户
提问于 2015-08-20 20:56:51
回答 1查看 676关注 0票数 0

我有一个非常大的数据库,我需要发送给开发人员,这个表有超过1.2亿行。开发人员说,他只需要大约10,000行,所以我打算使用sqlcmd -s -d -Q "select top 10000 * from table“-S,”-o“C:\temp\filename.csv,而不是立即截断--我会写出表,重命名并测试大容量插入,然后尝试使用从'c:\temp\filename.csv‘开始的大容量插入表(字段终止符= ','\n’)

这以“第1行的大容量加载数据转换错误(截断)”结尾。错误。我还尝试了导入/导出向导,但由于同样的问题(截断),它失败了。增加字段长度,解决问题,但我真的有问题,理解为什么我需要这样做。它来自同一个表中的相同数据,它应该大容量插入回?!?而且,这个问题发生在表中的每一列上,并且以不同的长度发生,因此没有一个列具有我必须添加的相同数量的字符。所有列都是varchar数据类型。sqlcmd是否在文件中插入某种类型的损坏?我试图寻找一个问题,我也尝试了rtrim(列名),以确保没有空白,但我不确定这是如何运作。如果这有帮助的话,我将使用sql server 2012。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-20 21:21:50

您应该查看BCP、Queryout和BULK选项。如果要从SQL到SQL,请使用本机格式。

(BCP是命令行):

代码语言:javascript
复制
bcp "select top(10000) * from table" queryout "OUTPUTFILENAME.DAT" -S serverInstanceName -d databaseName -T -n

Bulk Insert命令是SQL (不是命令行):

代码语言:javascript
复制
bulk insert table from 'path\and\OUTPUTFILENAME.DAT' with (keepidentity,datafiletype = 'native');

(如果表没有标识,则可以消除keepidentity,

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32128255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档