我有一个标签分隔的平面文件,有50列和200万行。我正在尝试将其导入SQLServer2017 Express。(我第一次尝试用Excel.无望)
我看到了两个可用的导入路径: SqlServer Management的导入平面文件命令和导入和导出数据向导。两者都失败了,但以不同的方式。
使用SSMS,它在解析文件和猜测列类型方面似乎做得很好,但它的长度仅以前几百行为基础。一列是长文本,所以我尝试将其设置为nvarchar(4000)或nvarchar(max)或ntext。还有一些我知道的可能比预设的长度50还要长,所以我把尺寸放大了。但是当我运行导入时,它会说某些列会被截断或无法转换,并且它拒绝说明哪一列有问题。
另一方面,对于导入向导,它根本不猜测列类型,而且我必须手动设置我所知道的列类型。值得庆幸的是,它有一个设置,允许您在每列上告诉它是在转换错误上失败还是忽略它们。但是它忽略了这个设置--它总是失败的,不管你如何设置公差,每列还是全局的。
好的部分是它确实识别了它失败的列名,即长文本列。但据我所知,它中没有任何东西是不应该失败的。我认为任何值都不会超过4000个字符(最长的是2027年),而且我很确定字符集是纯ascii-7。事实上,它是被迫大写的。
我还尝试从我创建的中止的Excel表中导入。这是因为只有32位导入程序才能看到Excel,只有64位导入程序才能看到我的数据库实例。
我如何才能得到其中的一个或另一个允许导入完成?
发布于 2019-02-21 00:29:24
我以前处理过tsv文件,也有过类似的问题。在导入平面文件时,我建议您更改Server解释列https://user-images.githubusercontent.com/35179176/34650736-39eaaab0-f3c6-11e7-9706-377c5f0f1170.png↑的方式,将其更改为DT_文本或DT_WSTR。若要更改此选项,必须通过“导入数据”而不是“导入平面文件”选项进行导入。
https://dba.stackexchange.com/questions/229989
复制相似问题