Python Vertica从本地文件复制,处理连接重置
你好,我是Python新手。我有5000多个.csv.gz文件要加载到vertica数据库中。服务器在10分钟后断开连接,因此在不重新设置服务器连接的情况下无法复制所有5000个文件 我这里有两个基本问题: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
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
当服务器连接被重置时会发生什么,它会引发异常吗?