Duckdb_离线处理腾讯文档以及更新字段的语法

duckdb

语法情况

语法 情况处理
 01. where 条件中 使用单引号而不是双引号	 	 
 02. select "observation.state" from episode; -- 带有dot的列名 在mysql中用反引号,在duckdb中用双引号 ###
python 中 
    result_dat.create_view("temp_table")
	
	con.register("new_temp_table",result_dat)

功能

1.通过https或者S3 访问 duckdb数据库--Network and Cloud Storage
    Attach to a DuckDB Database over HTTPS or S3
 命令 
    ATTACH 'https://blobs.duckdb.org/databases/stations.duckdb' AS stations_db;
	ATTACH 's3://duckdb-blobs/databases/stations.duckdb' AS stations_db;
 适用: 通过https或者S3 当前只支持读取,不支持写入
 
2.read_blob functions 和Multiple Files 
    DuckDB offers two ways of unifying schemas of multiple files: 
	by column position and by column name.
     Read a set of CSV files combining columns by position
	 Read a set of CSV files combining columns by name
	 
3.Meta Queries
    PRAGMA version; 
    PRAGMA platform;		

时间更新

1.MySQL 中create_time和update_time默认值和实时更新   
     create_time和update_time字段,便于后期维护
	 数据类型:
	 更新命令:
     初始化时间 :DEFAULT now()表示当数据插入数据库时,create_tim默认值为当前时间
	              ON UPDATE now()表示更新这条数据的时候,update_time会更新成当前时间
	   `create_time` datetime NOT NULL DEFAULT now() COMMENT '创建时间',
       `update_time` datetime NOT NULL DEFAULT now() ON UPDATE now() COMMENT '更新时间'
   
2.PostgreSQL   
    PostgreSQL 可以通过触发器实现类似MySQL的ON UPDATE功能
	   创建一个BEFORE UPDATE触发器,在更新行时自动设置时间戳
   
3.SQLite:
    从3.3.0版本开始,支持在TIMESTAMP字段中使用ON UPDATE,但语法略有不同:
	  update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP   
    只对 TIMESTAMP 类型有效,并且必须使用特定的日期时间函数
4.duckdb 
     DuckDB是嵌入式分析型数据库,通常更推荐在应用程序中处理更新时间戳   
        CREATE TABLE your_table (
            id INTEGER PRIMARY KEY,
            data VARCHAR,
            update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
        ); 
		
	merge into 	 db_a as target
    using(select t1.* from db_2 t1 ) as source
    on 	target.id = source.id 
    when matched then 
	     update	set update_time = LOCALTIMESTAMP
    when NOT matched  then	
        insert(id,name,data_type)
        values(source,id,source.name,source.data_type)
    ;			   
5.框架 
    SQLAlchemy中,可以这样定义   
6. Repository 模式 或 装饰器模式,
    这样可以在保持代码整洁的同时,确保所有更新操作都自动包含时间戳管理。
	对于需要审计的场景,考虑添加审计日志表来跟踪所有更改历史
7. doris 数据更新 
 doris 
 --1.简单的更新	 Simple update
 UPDATE user_profiles SET age = age + 1 WHERE user_id = 1;
 
 --2.连表更新 Cross-table join update
     UPDATE sales_records t1
     SET t1.user_name = t2.name
     FROM user_profiles t2
     WHERE t1.user_id = t2.user_id;
 参考  https://doris.apache.org/docs/3.x/data-operate/update/update-overview 
  
insert has filtered data in strict mode,翻译:插入在严格模式下过滤了数据。
    可能原因1:在创建表的时候有一列的长度过短。
    可能原因2:将null值插入到了not null的字段。 查看插入表的DDL,看是否有 not null 字段的设置
	      例如: id  设置成自增。

duckdb 处理腾讯文档数据

1.下载数据
     登录腾讯文档--查看在线表格,将其下载到本地
	 下载到本地后,打开excel后另存为xlsx数据
2.筛选数据--
	C:\Users\~\Downloads\data_表.xlsx		
	数据存储到本地库	
		处理完数据把文件重新命名+ 时间+名称
3.将批次处理数据放到对象存储上
     
4.附录说明 
    1.excel本质是一堆xml的zip文件
    2.win32com.client是Python中用于操作Windows COM对象的强大模块,
	   特别适合与Microsoft Office应用程序(如Word、Excel、Outlook等)进行交互 win32com.client是pywin32库的子模块	
	  pip install pywin32  
     通过另存为解决。 通过代码将原文件另存为然后读取另存为的文件
       1.‌文件格式或编码不兼容 原始Excel文件可能由特定系统(如WPS、网页导出、旧版软件)生成,
		  其内部格式(如XML结构、编码方式)与当前读取工具(如Python的pandas、openpyxl)不完全兼容。
		 当使用“另存为”功能时,Excel会重新构建文件的内部结构,将其转换为标准的.xlsx或.xls格式,从而消除兼容性问题  
       ‌2. 文件损坏或部分数据异常 3.‌文件被锁定或权限问题

参考

    https://blog.csdn.net/w499311647/article/details/145932719 TypeError: expected <class ‘openpyxl.styles.fills.Fill‘>
	https://blog.csdn.net/2301_78803982/article/details/141249871
posted @ 2026-02-02 09:52  辰令  阅读(0)  评论(0)    收藏  举报