Azure数据工厂:在通过管道从csv导入到sql服务器的过程中,错误和意外的数据类型转换

我正在尝试使用Azure管道复制数据运算符将数据从csv加载到sql服务器数据库。在导入期间,数据将转换为其他类型。

在管道的“源”预览中,我看到以下内容

1-值“ 0044”转换为44

2-值2020000000000000转换为2E + 16

3-值5.2转换为2月5日

4-值9.78转换为1978年9月

到目前为止,我找不到0044的解决方案,

我在这里的其他情况是我所做的:

对于2我将数字2020000000000000括在“”中,然后它起作用,尽管由于某种原因我将其括在四个“”中,例如:““ 2020000000000000”” 对于3和4,我将点替换为逗号,然后它起作用了。

但是我希望能够告诉import实用程序将所有内容都视为字符串,并在数据库中进行转换。

我该如何实现?

代码为3和4中的一列显示以下内容:

       "source":(

              "name": "Amount"

              "type": "String"

       )

       "sink":(

              "name": "Amount"

              "type": "String"

       )

最好的问候

taoguolin 回答:Azure数据工厂:在通过管道从csv导入到sql服务器的过程中,错误和意外的数据类型转换

csv中所有默认数据类型都是String。

enter image description here

对于Azure SQL数据库/ SQL Server,我们不能将数据'0044'存储为 int 数据类型。您需要将'0044'转换为字符串:

enter image description here

我们可以使用select convert to 44到'0044':

select right('0000'+ltrim([a]),4) new_a,b from test12

enter image description here

当我们从csv文件复制数据时,您需要考虑csv文件中的数据在Azure SQL数据库/ SQL Server中是否为有效数据类型。例如,数据“ 2020000000000000”超出了int长度。

设计水槽台非常重要。因此建议您首先在Azure SQL数据库中为每个列使用合适的数据类型创建接收器表,然后在“复制活动”中手动设置列映射:

映射设置:

enter image description here

管道正在运行:

enter image description here

SQL数据库中的数据检查:

enter image description here

更新

该问题现在由Ramiro Kollmannsperger亲自解决:

“”我的数据库中的接收器表只有nvarchar列。我是在对数据类型和长度感到头疼之后这样做的。最终的帮助是在读取csv的源数据集中进行模式导入,其中有一个选项卡“ connection”,旁边有另一个选项卡“ schema”,您可以在其中导入模式。工作。”

希望这会有所帮助。

,

我的数据库中的接收器表只有nvarchar列。 我是在对数据类型和长度感到头痛之后这样做的。

我认为对我来说,将数据库中的nvarchar转换为登台表更容易。

最终的帮助是在读取csv的源数据集中进行模式导入。 有一个选项卡“ connection”,旁边有另一个选项卡“ schema”,您可以在其中导入模式。完成此操作后。

本文链接:https://www.f2er.com/2537104.html

大家都在问