2011-05-24 15 views
50

में एक टैब निर्दिष्ट कैसे करूं, मैं एक टैब-सीमांकित फ़ाइल से डेटाग्रेज़ में डेटा खींचने के लिए psql "\ copy" कमांड का उपयोग करना चाहता हूं। मैं इस आदेश का उपयोग कर रहा हूँ:मैं पोस्टग्रेस फ्रंट-एंड COPY

\copy cm_state from 'state.data' with delimiter '\t' null as ; 

लेकिन मैं इस चेतावनी हो रही है (टेबल वास्तव में ठीक से लोड करता है):

WARNING: nonstandard use of escape in a string literal 
LINE 1: COPY cm_state FROM STDIN DELIMITER '\t' NULL AS ';' 
HINT: Use the escape string syntax for escapes, e.g., E'\r\n'. 

अगर '\ t' सही नहीं है कैसे मैं एक टैब निर्दिष्ट करूँ ?

+10

क्या त्रुटि संदेश का सुझाव का प्रयास करें: 'के साथ 'state.data' से \ प्रतिलिपि cm_state डेलीमीटर ई '\ t' null as ';' ' –

+0

हाँ, आप सही हैं। मुझे त्रुटि संदेश पर अग्रणी "ई" नहीं दिखाई दिया। बहुत धन्यवाद! –

+1

ई एक भागने अनुक्रम शुरू होता है। ई के बारे में सोचें जैसे कि आप सी ई '\ t' == "\ t" में एक डबल उद्धृत स्ट्रिंग करेंगे। – Sean

उत्तर

112

उपयोग E'\t' वहाँ में PostgreSQL वहाँ से बच गया हो सकता है पात्रों को बताने के लिए:

\copy cm_state from 'state.data' with delimiter E'\t' null as ; 
+7

धन्यवाद! इसने कम जानकारीपूर्ण त्रुटि को हल किया 'COPY डेलीमीटर मेरे लिए एक एकल बाइट वर्ण होना चाहिए। इसे यहां जोड़ना ताकि खोज इंजन इसे उठा सकें। –

+0

त्रुटि संदेश के साथ यह एक और जवाब होना चाहिए। बस इतना है कि खोज इंजन इसे उठाते हैं :) –

2

आप कर सकते हैं इस copy cm_state from stdin with (format 'text')

+0

टेक्स्ट फ़ाइल के लिए डिफ़ॉल्ट डिलीमीटर एक टैब है .. मैंने इसका उपयोग किया है और यह काम करता है .. https://www.postgresql.org/docs/9.2/static/sql- copy.html – user4372693

+0

यह मदद करता है जब आप शेल स्क्रिप्ट में कमांड रखना चाहते हैं - '$$ \ t $$' काम नहीं कर रहा है, विचित्र रूप से। – Otheus