Azure数据工厂:在通过管道从csv导入到sql server期间发生错误和意外的数据类型转换

Azure数据工厂:在通过管道从csv导入到sql server期间发生错误和意外的数据类型转换,azure,azure-pipelines,azure-data-factory,import-from-csv,Azure,Azure Pipelines,Azure Data Factory,Import From Csv,我正在尝试使用Azure管道复制数据操作符将数据从csv加载到sql server数据库。在导入过程中,数据被转换为其他类型 在管道中的源代码预览中,我看到了以下内容 1-值“0044”转换为44 2-值2020000000000000转换为2E+16 3-将值5.2转换为2月5日 4-将值9.78转换为1978年9月 到目前为止,我还没有找到0044的解决方案 我这里的其他案例是我所做的: 对于2,我将数字2020000000括在“”中,然后它就起作用了,尽管出于某种原因,我将它括在四个“li

我正在尝试使用Azure管道复制数据操作符将数据从csv加载到sql server数据库。在导入过程中,数据被转换为其他类型

在管道中的源代码预览中,我看到了以下内容

1-值“0044”转换为44

2-值2020000000000000转换为2E+16

3-将值5.2转换为2月5日

4-将值9.78转换为1978年9月

到目前为止,我还没有找到0044的解决方案

我这里的其他案例是我所做的:

对于2,我将数字2020000000括在“”中,然后它就起作用了,尽管出于某种原因,我将它括在四个“like so:”2020000000000000“中 对于3和4,我将点替换为逗号,然后它就起作用了

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

我怎样才能做到这一点

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

(

)


敬请注意,

csv中的所有默认数据类型都是字符串

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

我们可以使用select convert to
44
转换为“0044”:

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

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

设计接收器表非常重要。因此建议您首先在Azure SQL数据库中为每列创建具有适当数据类型的接收器表,然后手动在Copy active中设置列映射:

映射设置:

管道运行:

SQL数据库中的数据检查:

更新:

这个问题现在由Ramiro Kollmannsperger自己解决:


“数据库中的我的接收器表只有nvarchar列。在经历了大量数据类型和长度方面的麻烦之后,我这样做了。我决定对我来说,将数据库中的nvarchar转换成一个staging表更容易。最终的帮助是在读取csv的源数据集中进行模式导入。有一个选项卡“connection”,它旁边还有一个选项卡“schema”,您可以在其中导入模式。在这样做之后,它起了作用。”


希望这有帮助。

csv中的所有默认数据类型都是字符串

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

我们可以使用select convert to
44
转换为“0044”:

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

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

设计接收器表非常重要。因此建议您首先在Azure SQL数据库中为每列创建具有适当数据类型的接收器表,然后手动在Copy active中设置列映射:

映射设置:

管道运行:

SQL数据库中的数据检查:

更新:

这个问题现在由Ramiro Kollmannsperger自己解决:


“数据库中的我的接收器表只有nvarchar列。在经历了大量数据类型和长度方面的麻烦之后,我这样做了。我决定对我来说,将数据库中的nvarchar转换成一个staging表更容易。最终的帮助是在读取csv的源数据集中进行模式导入。有一个选项卡“connection”,它旁边还有一个选项卡“schema”,您可以在其中导入模式。在这样做之后,它起了作用。”


希望这有帮助。

数据库中的我的接收器表只有nvarchar列。 在经历了大量数据类型和长度方面的麻烦之后,我这样做了

我决定对我来说,将数据库中的nvarchar转换成一个staging表更容易

最终的帮助是在读取csv的源数据集中进行模式导入。
有一个“连接”选项卡,旁边是另一个“模式”选项卡,您可以在其中导入模式。执行此操作后,该选项卡工作正常。

数据库中的“我的接收器”表只有nvarchar列。 在经历了大量数据类型和长度方面的麻烦之后,我这样做了

我决定对我来说,将数据库中的nvarchar转换成一个staging表更容易

最终的帮助是在读取csv的源数据集中进行模式导入。
有一个“连接”选项卡,旁边是另一个“模式”选项卡“您可以在其中导入架构。在这样做之后,它起了作用

你能给我们看一些你的csv文件数据吗?加载csv文件以创建新表或插入要存在的数据表?csv中的所有默认数据类型都是字符串,您可以在映射设置中设置数据类型转换。另一种方法是,您可以创建e存储过程来转换csv数据,然后在Sink中调用存储过程。您可以向我们展示一些csv文件数据吗?加载csv文件以创建新表或插入要存在的数据表?csv中的所有默认数据类型都是字符串,您可以在映射设置中设置数据类型转换。另一种方法是,您可以创建一个存储过程来转换csv数据,然后在Sink.my Sink表中调用该存储过程,该表在数据库中只有nvarchar列。在经历了大量数据类型和长度方面的麻烦之后,我这样做了。我决定对我来说,将数据库中的nvarchar转换成一个staging表更容易。最终的帮助是在源代码D中进行模式导入