小编典典

SSIS和MySQL-表名称分隔符问题

sql

我正在尝试使用SQL Server 2008 SSIS将行从Access数据库插入MySQL数据库中。

TITLE: Microsoft SQL Server Management Studio
------------------------------

ERROR [42000] [MySQL][ODBC 5.1 Driver][mysqld-5.0.51a-community-nt]You have 
an error in your SQL syntax; check the manual that corresponds to your MySQL 
server version for the right syntax to use near '"orders"' at line 1

问题出在定界符上。我正在使用5.1
ODBC驱动程序,并且可以连接到MySql并从ADO.Net目标数据源中选择一个表。在SSIS包编辑器中,所有MySql表均以双引号分隔:

"shipto addresses"

如果表名中有空格,则无法从ADO.NET目标编辑器上的“使用表或视图”文本框中删除双引号或将其替换为其他内容。当SSIS将Insert查询放在一起时,它将保留双引号并添加单引号。

当我在编辑器中单击“预览”时,将显示以上错误,并且在运行程序包时引发了类似的错误(尽管实际上是从实际的insert语句发出的)。

我似乎无法控制这种行为。有什么建议?我可以手动编码SQL的其他程序包类型没有此问题。


阅读 195

收藏
2021-04-28

共1个答案

小编典典

解决方案是使用执行以下任务的Execute Sql任务,将连接重用于所有任务,并在执行任何插入操作之前为连接打开ANSI引号:

set sql_mode='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,
     NO_ENGINE_SUBSTITUTION,ANSI_QUOTES'
2021-04-28