PlanetScale:在MySQL Shell中导入/导出到CSV需要访问服务器文件系统



如果我想导出到csv从csv入,我需要从MySQL数据库外壳中访问文件系统。

例如

SELECT id, filename
FROM attachments
INTO OUTFILE '/tmp/results.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY 'n';

我现在正在使用PlanetScale,我不知道如何或在哪里可以访问服务器文件系统,以便从mysqlshell中导入或导出数据。

请参阅https://vitess.io/docs/14.0/reference/compatibility/mysql-compatibility/

MySQL中SELECTSELECT ... INTO形式允许查询结果存储在变量中或写入文件中。Vitess支持SELECTCCD_ 4和CCD_keyspace,但不支持将结果存储在变量中。此外INTO的位置必须朝向查询的末尾,而不是中间。正确查询的示例如下:

SELECT * FROM <tableName> INTO OUTFILE 'x.txt' FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"' ESCAPED BY 't' LINES TERMINATED BY 'n'

对于分片密钥空间,该语句仍然可以使用,但仅在使用USE语句指定确切的shard

(强调矿(

因此,您必须知道要使用哪台服务器,因为它要求您指定shard。

一旦指定了碎片,就可以导出到该碎片的文件系统中。大概你知道你的每个碎片都在哪个服务器上运行。这取决于你,我帮不了你。

很明显,如果您使用RDS等托管数据库服务器作为碎片,云供应商不允许ssh到服务器访问文件,因此无论使用Planetscale,SELECT ... INTO都是不可能的。

最新更新