当前位置: 首页 > 面试题库 >

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

吕灿
2023-03-14
问题内容

我正在尝试使用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的其他程序包类型没有此问题。


问题答案:

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

set sql_mode='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,
     NO_ENGINE_SUBSTITUTION,ANSI_QUOTES'


 类似资料:
  • 我有一组平面文件(114个文件),每个文件都用数据库表名命名。我有数据库模式,所以我的数据库准备好了,没有记录在其中。 我所要做的就是,处理这些平面文件,并将这些记录插入到相应的表中。 我创建了一个SSIS包,我正在尝试在Ole DB目标中设置动态表名。 messageBox提供了所需的数据。但Ole DB目标表无法识别第二个循环中的表名。 “ActiveCompositionGenericID”

  • 问题内容: 已修改。 此代码有什么问题?我得到以下错误。 您的SQL查询中似乎有一个错误。下面的MySQL服务器错误输出(如果有的话)也可以帮助您诊断问题 错误:未知的标点字符串@ 102 STR:|; SQL:如果存在PersonName,则执行DROP功能;#MySQL返回空结果集(即零行)。 DELIMITER |; DELIMITER |; DELIMITER |; DELIMITER |

  • 问题内容: 我经常看到人们在使用定界符。我试图找出什么是分隔符,以及它们的目的是什么。谷歌搜索20分钟后,我找不到能满足我要求的答案。所以,我现在的问题是:什么是分隔符,何时应使用它们? 问题答案: 在定义函数,存储过程和触发器(其中必须定义多个语句)时,通常使用默认值以外的分隔符 。您可以定义一个不同的定界符,例如,该定界符用于定义整个过程的结尾,但是在其中,每个单独的语句均以终止。这样,当代码

  • 我在mysql工作台上设计了一个数据库。当我转到forward engineer时,我得到了(错误号:121),因为我在多个表中使用了相同的外键,我意识到这是不允许的。我有相当多的连接表,主要是n:m关系。对于这些连接表中的大多数,我都使用复合主键(由2个外键组成)。我的问题是我必须重命名这些主键和外键是唯一的吗?谢谢你的帮助。 (在下面的代码中,我还没有重命名外键)

  • 问题内容: 我创建了一个表,如下所示: 然后尝试插入查询: 而且由于表名称中的错误,我假设这是mysql中的特殊字符。我试图对其进行转义,但查询仍然失败。 所以,我能有特殊字符,如或在表名?如果是,那么我可能必须以某种方式对其进行编码? 谢谢。 问题答案: 用反引号引用您的含糊不清或“特殊”表名: 或者更好的是,不要在表名中使用特殊字符以避免此类问题。

  • 但ibatis会抛出以下错误: ...执行时出错:delimiter//drop函数if存在get_next_value_test//create函数get_next_value_test(p_name varchar(30))返回int deterministic sql security invoker begin declare current_val integer。原因:com.mysq