首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dbatools进口csv帮助!

dbatools进口csv帮助!
EN

Database Administration用户
提问于 2022-08-30 11:56:37
回答 1查看 220关注 0票数 0

是否有一种方法可以使用PS dba工具将具有适当数据类型的<>csv文件导入MSSQL表?

我在下面的命令中使用这个命令,但我得到的只是一个表,所有的列都是nvarchar(max):

代码语言:javascript
复制
Import-DbaCsv -Path C:\user.csv -SqlInstance $server -Database $DB -AutoCreateTable

我知道我可以通过SSIS实现这一点,但这对我来说不是最好的选择,因为一些CSV结构一直在变化,+/-列。

EN

回答 1

Database Administration用户

发布于 2022-08-30 13:53:11

用例中的根本问题是,批量加载程序无法正确猜测列大小,甚至无法猜测数据类型。您可以看到,在大多数ETL实现中,列类型和长度都是预先指定的。加载器可以信任数据要么适合目标,要么将其归类为已损坏的数据。

装载机不知道,比如说,501行的产品描述中有1500个字符的长字符串,而所有其他行都只有几十个字母。如果猜测列较短,则行501将无法正确加载。如果它安全,并使所有的nvarchar(max),数据适合,但效率低,没有类型检查是做的。

现在,加载程序可以读取整个文件,并对每个列的最大长度和数据类型进行计数。然后根据这些规范创建一个表。然后它将再次读取整个文件,并执行插入操作。这将需要读取文件两次,这是低效的,通常不需要,因为ETL进程依赖于预先商定的文件格式。有些工具(例如的导入向导)可以这样做。它从文件中读取前200行,并根据该数据进行猜测。这就是为什么我认为错误匹配的数据位于501行,离取样器组件太远了。

有些工具,如csvkit,可以从CSV文件创建表结构。不管有什么好处,我都没有经验。

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

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

复制
相关文章

相似问题

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