第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

將 json 導(dǎo)入 Postgres 時(shí)的編碼問(wèn)題

將 json 導(dǎo)入 Postgres 時(shí)的編碼問(wèn)題

泛舟湖上清波郎朗 2021-08-05 16:22:57
我正在使用熊貓,并將數(shù)據(jù)導(dǎo)出為 json,如下所示:import pandas as pddf = pd.DataFrame({'a': ['Têst']})df.to_json(orient='records', lines=True)> u'{"a":"T\\u00east"}'這是有道理的,因?yàn)槲覀冇幸粋€(gè)00ea前綴為 的 Unicode 字符,\u并且\在轉(zhuǎn)換為 JSON 時(shí)會(huì)轉(zhuǎn)義為但是然后我將 JSON 字符串導(dǎo)入到 Postgres 中 COPYbuffer = cStringIO.StringIO()buffer.write(df.to_json(orient='records', lines=True))buffer.seek(0)with connection.cursor() as cursor:  cursor.copy_expert(sql="""  COPY tmp (json_data) FROM STDIN WITH NULL AS '' ENCODING 'UTF8';  """, file=buffer)問(wèn)題是數(shù)據(jù)庫(kù)中的結(jié)果最終是{"a": "Tu00east"}正如你所看到的那樣,雙人\\消失了。我嘗試使用CSVCOPY 模式,但由于某些數(shù)據(jù)中有逗號(hào),因此將事情搞砸了,并且嘗試將 ESCAPE 字符和 DELIMITER 設(shè)置為其他內(nèi)容似乎總是會(huì)導(dǎo)致失敗。表列有一個(gè)jsonb類(lèi)型。我在文檔中讀到 PG 不喜歡 \x003f 上的非 ASCII Unicode,除非 DB 編碼是 UTF8,在我的情況下,這應(yīng)該不是問(wèn)題。我想弄清楚為什么這里要?jiǎng)h除轉(zhuǎn)義字符,以及如何導(dǎo)入 Postgres 并保存編碼。
查看完整描述

1 回答

?
PIPIONE

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊

將 csv 選項(xiàng)用于COPY, 和DELIMITER e'\x01' QUOTE e'\x02'。我不確定這是否適用于所有可能的有效 JSON,但我從來(lái)沒(méi)有失敗過(guò)。


$ psql -X testdb -c 'create table t(d jsonb)'

CREATE TABLE

$ cat foo.json

{"a":"Têst"}

$ cat foo.json | psql -X testdb -c "COPY t from stdin csv delimiter e'\x01' quote e'\x02'" 

COPY 1

$ psql -X testdb -c 'select * from t';                                                    

       d       

---------------

 {"a": "Têst"}

(1 row)


查看完整回答
反對(duì) 回復(fù) 2021-08-05
  • 1 回答
  • 0 關(guān)注
  • 191 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)