您可以创建一个表(如果您没有写权限,则可以创建一个易失性表)来执行此操作。将结果从 SQL Server 导出为文本或您选择的语言。
CREATE VOLATILE TABLE store_table (
column_1 datatype_1,
column_2 datatype_2,
...
column_n datatype_n);
您可能需要在 ; 之前添加 ON COMMIT PRESERVE ROWS以上取决于您的交易设置。
从一种语言中,您可以循环以下内容或执行多次。
INSERT INTO store_table VALUES(value_1, value_2, ..., value_n);
或者,您可以使用 Teradata SQL 助手从文本导入,方法是转到文件并选择导入。然后执行以下操作并导航到您的文件。
INSERT INTO store_table VALUES(?, ?, ..., n);
插入数据后,您只需引用表名即可对其进行查询。
SELECT cmp_id,state,sde
FROM xyz
WHERE store IN(
SELECT store
FROM store_table)
DISTINCT 函数最容易在从 SQL Server 导出时完成,以最大限度地减少您需要上传的行数。
编辑:
如果您多次执行此操作,您可以使用脚本执行此操作,这是 Python 中的一个非常简单的示例:
import pyodbc
con_ss = pyodbc.connect('sql_server_odbc_connection_string...')
crs_ss = con_ss.cursor()
con_td = pyodbc.connect('teradata_odbc_connection_string...')
crs_td = con_td.cursor()
# pull data for sql server
data_ss = crs_ss.execute('''
SELECT distinct store AS store
from store_Desc
''').fetchall()
# create table in teradata
crs_td.execute('''
CREATE VOLATILE TABLE store_table (
store DEC(4, 0)
) PRIMARY INDEX (store)
ON COMMIT PRESERVE ROWS;''')
con_td.commit()
# insert values; you can also use an execute many, but this is easier to read...
for row in data_ss:
crs_td.execute('''INSERT INTO store_table VALUES(?)''', row)
con_td.commit()
# get final data
data_td = crs_td.execute('''SELECT cmp_id,state,sde
FROM xyz
WHERE store IN(
SELECT store
FROM store_table);''').fetchall()
# from here write to file or whatever you would like.