Sql server OpenEdge\SQL Server导出的进度

Sql server OpenEdge\SQL Server导出的进度,sql-server,openedge,progress-db,Sql Server,Openedge,Progress Db,我主要来自mysql\apache背景,但我们与其他几家姐妹公司有一个小组项目,将我们所有的数据库转换为一个报表服务器 销售人员使用的主要系统基于Progress OpenEdge,我正在尝试将这些DBS表的导出文件创建为输出文件,这些文件可以使用sql server提供的软件输入sql server 在OpenEdge\Progress一方的人一天中大部分时间都是AFK(并且对它非常保护,即我不能在系统周围闲逛),从我所看到的情况来看,他使用一种叫做SQLExplorer(JDBC)的东西来针

我主要来自mysql\apache背景,但我们与其他几家姐妹公司有一个小组项目,将我们所有的数据库转换为一个报表服务器

销售人员使用的主要系统基于Progress OpenEdge,我正在尝试将这些DBS表的导出文件创建为输出文件,这些文件可以使用sql server提供的软件输入sql server

在OpenEdge\Progress一方的人一天中大部分时间都是AFK(并且对它非常保护,即我不能在系统周围闲逛),从我所看到的情况来看,他使用一种叫做SQLExplorer(JDBC)的东西来针对该数据库翻译任何SQL

这个过程将使用一个非常基本的SQL语句输出一个文本文件

SELECT * FROM QUERY.PUB.case_process
但它没有分隔符,因此无法输入sql server

我已经提供了以下在SSMS上执行良好且具有分隔符等的内容

EXECUTE master.dbo.xp_cmdshell 'BCP "SELECT * FROM QUERY.PUB.case_process" queryout c:\case_process_cmdshell_test.txt -t"|" -c -T '
但在对OpenEdge进行测试时,它会抛出一个错误

SQLState=HY000
ErrorCode=-210056
[DataDirect][OpenEdge JDBC Driver][OpenEdge] Syntax error in SQL statement at or about "EXECUTE master.dbo.xp_cmdshell 'BCP "SEL" (10713)
我试图确保没有SQL-92保留字和其他一些小东西


实际上,我很困惑,因为我在本地拥有的MySQL DBs(我正在将数据发送到此SQL server)只涉及ODBC\SSMA,工作起来就像做梦一样,但有人告诉我,OpenEdge\Progress没有等价物

你说的“没有分隔符”是什么意思?是固定宽度的文件吗?BCP可以使用格式文件读取此类文件。在任何情况下,问题的一部分是,您试图在完全无关的产品中使用SQl Server特定的过程,如
xp\u cmdshell
。即使您试图在SQl Server中运行此命令,也不太可能尝试从数据库本身内部运行外部程序,如
bcp
。根本没有理由这么做,尽管有很多理由可以避免,包括需要提高特权。只需从命令行运行bcp在任何情况下,都可以使用bcp加载Postgres生成的固定宽度文件。更好的选择可能是安装Postgres OLEDB驱动程序,将另一台服务器配置为,并从SQL server自身Progress Postgres对其执行查询Progress sqlexp输出为固定长度格式。