首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将平面文件导入SqlServer

无法将平面文件导入SqlServer
EN

Database Administration用户
提问于 2019-02-17 18:23:25
回答 2查看 4K关注 0票数 3

我有一个标签分隔的平面文件,有50列和200万行。我正在尝试将其导入SQLServer2017 Express。(我第一次尝试用Excel.无望)

我看到了两个可用的导入路径: SqlServer Management的导入平面文件命令和导入和导出数据向导。两者都失败了,但以不同的方式。

使用SSMS,它在解析文件和猜测列类型方面似乎做得很好,但它的长度仅以前几百行为基础。一列是长文本,所以我尝试将其设置为nvarchar(4000)或nvarchar(max)或ntext。还有一些我知道的可能比预设的长度50还要长,所以我把尺寸放大了。但是当我运行导入时,它会说某些列会被截断或无法转换,并且它拒绝说明哪一列有问题。

另一方面,对于导入向导,它根本不猜测列类型,而且我必须手动设置我所知道的列类型。值得庆幸的是,它有一个设置,允许您在每列上告诉它是在转换错误上失败还是忽略它们。但是它忽略了这个设置--它总是失败的,不管你如何设置公差,每列还是全局的。

好的部分是它确实识别了它失败的列名,即长文本列。但据我所知,它中没有任何东西是不应该失败的。我认为任何值都不会超过4000个字符(最长的是2027年),而且我很确定字符集是纯ascii-7。事实上,它是被迫大写的。

我还尝试从我创建的中止的Excel表中导入。这是因为只有32位导入程序才能看到Excel,只有64位导入程序才能看到我的数据库实例。

我如何才能得到其中的一个或另一个允许导入完成?

EN

回答 2

Database Administration用户

回答已采纳

发布于 2019-02-21 00:29:24

我以前处理过tsv文件,也有过类似的问题。在导入平面文件时,我建议您更改Server解释列https://user-images.githubusercontent.com/35179176/34650736-39eaaab0-f3c6-11e7-9706-377c5f0f1170.png↑的方式,将其更改为DT_文本DT_WSTR。若要更改此选项,必须通过“导入数据”而不是“导入平面文件”选项进行导入。

票数 3
EN

Database Administration用户

发布于 2019-02-21 00:38:30

与使用导入向导不同,您可以将TSV文件放在Server上,并使用OPENROWSET使用TSV脚本直接读取文件数据。使用此方法并选择..。INTO允许您根据文件中的实际数据类型(最大列等)创建一个表。

有关更多信息,请参见此链接

基本语法:

代码语言:javascript
复制
SELECT BulkColumn
FROM OPENROWSET (BULK 'c:\temp\mytxtfile.txt', SINGLE_CLOB) MyFile 

查看文档以处理行结束器等问题

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

https://dba.stackexchange.com/questions/229989

复制
相关文章

相似问题

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