我的Route::post('/', function(Request $request){
dd($request);
});
命令一直收到以下错误:
COPY
我通过以下函数运行它来检查非ASCII字符:
Missing newline: Unexpected character 0x73 found at location 4194303
并且发现我有许多字符返回了def return_non_ascii_codes(input: str):
for char in input:
if ord(char) > 127:
yield ord(char)
代码。在160
图表中查看此内容,看起来这是一个Unicode
字符:http://www.fileformat.info/info/unicode/char/00a0/index.htm
我想在non-break space
命令中NULL
这些字符,但不确定我应该使用的字符序列/格式是什么。
COPY
命令如下:
COPY
编辑:
我使用Python来查找字符,但Python不会在我的管道中进行任何实际处理。我从COPY xxx
FROM 's3://xxx/cleansed.csv'
WITH CREDENTIALS 'aws_access_key_id=xxx;aws_secret_access_key=xxx'
-- GZIP
ESCAPE
FILLRECORD
TRIMBLANKS
TRUNCATECOLUMNS
DELIMITER '|'
BLANKSASNULL
REMOVEQUOTES
ACCEPTINVCHARS
TIMEFORMAT 'auto'
DATEFORMAT 'auto';
个数据库执行COPY TO STDOUT
命令,然后将这些文件直接上传到PostgreSQL
,以便复制到S3
。所以它需要在这两个地方中的一个处理。
以下是目标表中的两个字段:
Redshift
更新1: 我通过一个函数运行脚本来清理所有非ASCII字符,如下所示:
id BIGINT,
quiz_data VARCHAR(65535)
然后尝试with open(file, 'r') as inf, open(outfile, 'w') as outf:
for line in inf:
print(return_non_ascii_codes(line))
outf.write(''.join(return_ascii_chars(line)))
def return_ascii_chars(input: str):
return (char for char in input if ord(char) < 127)
到Redshift。仍然得到以下内容:
COPY
我已经仔细检查过清理过的文件没有任何非ASCII字符...
答案 0 :(得分:1)
COPY table1 FROM 's3://my_bucket' CREDENTIALS '' ACCEPTINVCHARS
使用可以在复制命令中使用ACCEPTINVCHARS参数
它非常简单直接。
如果我做了一个错误的假设,请发表评论,我将重新调整我的答案。
答案 1 :(得分:0)
yourvariable.replace(unichr(160),&#34;&#34;)