Python Vertica从本地文件复制,处理连接重置

Python Vertica从本地文件复制,处理连接重置,python,logging,vertica,Python,Logging,Vertica,你好,我是Python新手。我有5000多个.csv.gz文件要加载到vertica数据库中。服务器在10分钟后断开连接,因此在不重新设置服务器连接的情况下无法复制所有5000个文件 我这里有两个基本问题: 如何跟踪成功执行的复制命令 如何重新设置连接并从上次失败的命令重新启动 我使用的代码是: import pyodbc conn = pyodbc.connect("DSN=Vertica_SG;SERVER=54.169.66.95;DATABASE=xyzdwh;PORT=5433;UID

你好,我是Python新手。我有5000多个.csv.gz文件要加载到vertica数据库中。服务器在10分钟后断开连接,因此在不重新设置服务器连接的情况下无法复制所有5000个文件

我这里有两个基本问题:

  • 如何跟踪成功执行的复制命令
  • 如何重新设置连接并从上次失败的命令重新启动
  • 我使用的代码是:

    import pyodbc
    conn = pyodbc.connect("DSN=Vertica_SG;SERVER=54.169.66.95;DATABASE=xyzdwh;PORT=5433;UID=abc123;PWD=abc123")
    cursor = conn.cursor()
    cursor.execute("Copy schema1.table1 from local 'E:\\folder1\\table1.csv.gz' GZIP with Delimiter ',' direct;")
    cursor.execute("Copy schema1..table2 from local 'E:\\folder1\\table2.csv.gz' GZIP with Delimiter ',' direct;")
    
    ...
    [5000 such execute commands]
    ...
    
    print("All done")
    

    我建议您在加载数据时使用
    流名称
    选项

    Copy schema1.table1 from local 'E:\folder1\table1.csv.gz' STREAM NAME 'E:\folder1\table1.csv.gz' GZIP with Delimiter ',' direct;
    
    然后对成功加载的流运行查询,并将其从列表中删除

    SELECT * FROM v_monitor.load_streams WHERE stream_name = 'My stream name';
    
    另外,在
    load\u streams
    表中可以看到
    rejected\u row\u count
    列值,因为它会告诉您有多少行被拒绝

    您还可以使用
    CURRENT\u LOAD\u SOURCE()
    ,这样您就需要向表中添加一个新列

    但是,当我从不同的位置(并行)加载时,会使用这个方法,并且我可以更好地识别加载过程中哪个文件失败

    --create the table 
    create table bla(email varchar2(50),source varchar2(200));
    
    --load the table using the CURRENT_LOAD_SOURCE() as a filler for the source column
    COPY bla (email, source AS CURRENT_LOAD_SOURCE()) FROM '/home/dbadmin/data*' DELIMITER ',';
    
    select * from bla limit 1;
    
                            email                     |  source
        ----------------------------------------------+----------
          Steven.Kastrinakis@advantagepharmacy.com.au | data.csv
    

    当服务器连接被重置时会发生什么,它会引发异常吗?